【发布时间】:2016-05-26 21:05:56
【问题描述】:
我必须从灰度图像中提取一个矩形对象。我正在使用阈值提取矩形掩码,如下所示
有时,矩形对象可能有如上所示的倾斜。在下一步中,我必须纠正矩形对象的形状以获得以下输出(大致)
目前,我正在使用霍夫线变换来找到最接近图像边缘的线(即最左边的线垂直线)。我得到线的角度并使用该角度来获取旋转矩阵并在整个图像上执行 warpAffine(使用 opencv 函数)。
我在python中使用以下代码
# get the rotation matrix
myRotMatrix = cv2.getRotationMatrix2D((inBinaryImage.shape[1]/2,inBinaryImage.shape[0]/2),-myAngle,1)
# perform warpAffine to avoid issues
myBinaryImageTemp = cv2.warpAffine(inBinaryImage,myRotMatrix,(myNewWidth,myNewHeight))
如您所见,仿射校正对象的顶部和底部仍有一些倾斜。有没有一种简单的方法也可以从顶部/底部移除倾斜?
谢谢
【问题讨论】:
-
你的问题是矩形本身实际上并不是一个矩形,它是一个平行四边形。它的侧面虽然平行,但不具有直角。在这种情况下,代码运行正常,它旋转了正确的量,但连接到该线的“形状”角大约为 108 度,底角和顶角为 80 度。 (这就是导致你倾斜的原因。)
-
有办法解决吗??
标签: python opencv image-rotation affinetransform