如何将使用cv2.minarearect()裁剪的图像中的坐标转换回原始图像

时间:2019-04-09 20:30:57

标签: python opencv rotation coordinates transform

使用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+ ...?...

0 个答案:

没有答案