【问题标题】:correcting the rectangular mask for any tilt using opencv使用opencv校正任何倾斜的矩形掩码
【发布时间】: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


【解决方案1】:

你应该可以用getPerspectiveTransform做点什么,我用过in a grid finder,我的用法和你的不太一样,但是你一定可以通过阅读来学到足够的东西。我不是 opencv 专家,不要指望最先进的代码。

此外,如果不使用像监督学习这样的奇思妙想来了解物体的方向,那么要知道倾斜物体的比例可能几乎是不可能的。这里有一个讨论:https://math.stackexchange.com/questions/1339924/compute-ratio-of-a-rectangle-seen-from-an-unknown-perspective

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-24
    • 2021-09-18
    • 2016-05-31
    • 2019-06-19
    • 1970-01-01
    • 1970-01-01
    • 2016-02-03
    • 2019-08-13
    相关资源
    最近更新 更多