使用opencv

时间:2016-05-26 21:05:57

标签: python opencv image-rotation affinetransform

我必须从灰度图像中提取矩形对象。我正在使用阈值处理来提取矩形掩模,如下所示

enter image description here

有时,矩形物体可能有如上所示的倾斜。在下一步中,我必须更正矩形对象的形状以获得以下输出(大致)

enter image description here

目前,我正在使用霍夫线变换来找到最接近图像边缘的线(即最左边的线垂直线)。我得到线的角度并使用该角度来获得旋转矩阵并对整个图像执行warpAffine(使用opencv函数)。

靠近图像边缘的垂直线检测 enter image description here

仿射校正图像 enter image description here

我在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))




正如您所看到的那样,仿射修正的物体在顶部和底部仍有一些倾斜。有没有一种简单的方法来消除顶部/底部的倾斜?

由于

1 个答案:

答案 0 :(得分:1)

您应该可以使用getPerspectiveTransform执行某些操作,我使用它in a grid finder,我的用法与您的用法并不完全相同,但您可以通过阅读来学习。我不是opencv专家,不要指望最先进的代码。

此外,可能几乎不可能知道倾斜物体的比例,而不使用花哨的想法来监督学习以理解物体的方向。这里有一个讨论:https://math.stackexchange.com/questions/1339924/compute-ratio-of-a-rectangle-seen-from-an-unknown-perspective