使用cv2.minAreaRect()
来复制图像时,将返回找到的对象的中心,大小和角度。这些可用于裁剪对象。裁剪后的图像中的要素坐标如何转换回原点,例如将裁剪后的图像中检测到的对象的位置指向原始总图像?
可以使用
计算旋转矩阵rotation_matrix = cv2.getRotationMatrix2D(center, angle, 1)
并使用以下代码可以旋转坐标:
original_point = np.matrix([[x],[y],[0]])
xrotated,yrotated = rotation_matrix*original_point
但是,我找不到如何正确转换坐标
img, cnt, hierarchy = cv2.findContours(img ,cv2.RETR_TREE,cv2.CHAIN_APPROX_SIMPLE)
for contour, hier in zip (cnt, hierarchy[0]):
if hier[3] == -1: #outside contour
x,y,w,h = cv2.boundingRect(contour)
lenght = max(w,h)
width = min(w,h)
if width> 100 and lenght > 200:
RotatedProductBox = cv2.minAreaRect(contour)
(center, size, angle) = RotatedProductBox
rotation_matrix = cv2.getRotationMatrix2D(center, angle, 1)
print "rotationMatrix= "+str(rotation_matrix)
x=354
y=457
original_point = np.matrix([[x],[y],[0]])
print"original point"+str(original_point)
xrotated,yrotated = rotation_matrix*original_point
print "x and y rotated:"+str(xrotated)+", "+str(yrotated)
我希望下一步像这样
x_in_original_image = xrotated+ ...?...
y_in_original_image = yrotated+ ...?...