[OpenCV] 射影変換時の基点座標の変更

前提

cv2.approxPolyDP(近似)を使用して
"画像①"のようにどのような角度の画像でも基点を左上の座標に統一を行いたいのですが、

画像①
イメージ説明
"画像②"のように(y座標が一番小さい値?)のものが基点になってしまいます。

画像②
イメージ説明

座標データの並び順を、関数sorted()などで並び変えるなど考えてはみたものの、
上手くいかず質問をさせていただきました。

ご教授いただければ幸いです。

実現したいこと

  • 基点を左上に統一する (画像①のように)
    (cv2.approxPolyDP(形状近似作成)を行った座標の並び順を変更する)

該当のソースコード

Python

# グレイスケールgray_image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)# 二値化_, thresh_image = cv2.threshold(gray_image, 0, 255, cv2.THRESH_BINARY_INV + cv2.THRESH_OTSU)# 輪郭抽出contours, _ = cv2.findContours(thresh_image, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)# 最大面積選択box_contours = max(contours, key=cv2.contourArea)# epsilonepsilon = 0.1 * cv2.arcLength(box_contours, True)# 近似approx = cv2.approxPolyDP(box_contours, epsilon, True) box_width = 640box_height = round(box_width * (11.5/9.5)) src = np.float32(list(map(lambda x: x[0], approx)))dst = np.float32([[0, 0], [0, box_width], [box_height, box_width],[box_height, 0]]) projectMatrix = cv2.getPerspectiveTransform(src, dst)transformed = cv2.warpPerspective(image, projectMatrix, (box_height, box_width)) cv2.imshow("image", transformed)

コメントを投稿

0 コメント