我正在寻找一个程序,以检测一个扭曲矩形的角落在Python与OpenCV精确。在
我试过用google搜索不同建议的解决方案,但是通过一条直线的正弦叠加(见阈值图像),我可能无法检测到角点。到目前为止,我尝试过寻找克隆和HoughLines,但没有得到好的结果。 不幸的是,我不明白徐斌在how to find blur corner position with opencv?中的C代码
这是我的初始图像:
在调整大小和阈值后,我应用canny边缘检测来获得以下图像:
contours, hierarchy = cv2.findContours(g_mask, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
box = cv2.minAreaRect(contour)
box = cv2.cv.BoxPoints(box) if imutils.is_cv2() else cv2.boxPoints(box)
box = np.array(box, dtype="float")
box = perspective.order_points(box)
我只得到了一些额外的结果:
我原以为直线拟合是解决这个问题的好方法,但不幸的是我不能让HoughLines工作,而且在查找了OpenCV Python - How to implement RANSAC to detect straight lines?RANSAC似乎也很难申请我的问题。在
我们非常感谢您的帮助。在
要检测角点,可以使用^{} 。函数有四个参数
image
-输入8位或浮点32位灰度单通道图像maxCorners
-要返回的最大角数qualityLevel
-角落的最低可接受质量水平在0-1之间。所有低于质量等级的角都将被拒收minDistance
-角点之间可能的最小欧几里德距离现在我们知道了如何找到角点,我们必须找到旋转矩形并应用函数。以下是一种方法:
首先对图像进行放大、灰度化、双边滤波,然后通过Otsu阈值得到二值图像
接下来我们用
cv2.findContours()
找到扭曲的矩形,然后得到以绿色突出显示的旋转边界框。我们把这个边界框画到一个面具上现在我们有了蒙版,我们只需使用
cv2.goodFeaturesToTrack()
来查找蒙版上的角点这是原始输入图像的结果和每个角点的
(x, y)
坐标转角点
^{pr2}$代码
相关问题 更多 >
编程相关推荐