私はそれを最終的に解決しました。
contours, hierarchy = cv2.findContours(img_dilate.copy(), cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
points=[]
i=0
for contour in contours:
area = cv2.contourArea(contour)
if area > 10 and area < 800:
x,y,w,h = cv2.boundingRect(contour)
cv2.rectangle(img_dilate,(x,y),(x+w,y+h),(0,255,0),2)
center = (int(x),int(y))
position = (center[0], center[1])
points.append(position)
print position,i
text_color = (255,0,255)
cv2.putText(resized,str(i+1), position, cv2.FONT_HERSHEY_SIMPLEX, 0.5, text_color, 2)
i=i+1
pnts = np.array(points)
rect = cv2.minAreaRect(pnts)
box = cv2.cv.BoxPoints(rect)
box = np.int0(box)
cv2.drawContours(resized,[box],0,(0,255,0),2)
root_mat = cv2.getRotationMatrix2D(rect[0], angle , 1)
rotated = cv2.warpAffine(resized, root_mat, dim, flags=cv2.INTER_CUBIC)
cv2.getRectSubPix(rotated, dim, center)
次いでwarpPerspective'toそれをデスキュー '使用基準矩形から得られたマッチングポイントと' findHomography'機能、OpenCVの者を使用してホモグラフィ行列を探します。 –
@Optimus 1072それは本当にガドの解決ですが、ホモグラフィは、ソースからデスティネーションのような固定点です。私の場合、4つの参照矩形は画像が変化すると固定されません。画像テンプレートは類似の矩形を持ちますが、固定小数点はありません。だから私はいくつかのコード/アプローチは、それに基づいてデスキューする必要があります。 –
私はまだあなたの質問を正しく理解していないと思います。目標エリアを見つけるためのアルゴリズムが必要ですか?そうでなければホモグラフィは4つの四角形(ターゲット)の4つの矩形を見つけることができるので動作します。そうでなければ、傾き補正についての問題ではありません。 –