【发布时间】:2013-06-02 09:32:39
【问题描述】:
我正在尝试检测屏幕照片或一般嘈杂图像上的低对比度线条。我似乎遇到了两个问题:
由于屏幕的噪声/暗网格,我无法使用自适应阈值或边缘检测算法可靠地检测线条。模糊似乎有点帮助,但不足以让我让它发挥作用。
-
当同一条线只有几段可见时(由于噪声、光照条件或其他原因),我想将检测到的线段连接到一条直线。
img = cv2.imread("test.jpg") gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) gray=cv2.GaussianBlur(gray,(9,9),0) bin = cv2.adaptiveThreshold(gray2, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY_INV, 33, 3) cv2.namedWindow('Test') cv2.imshow("Test", bin)
我也尝试过cv2.Canny 和cv2.HoughLinesP,但没有好的结果,因为暗网格把两者都搞砸了。提前致谢!
编辑:我认为带有THRESH_TRUNCATED 或THRESH_TOZERO 的阈值函数的本地版本可能会有所帮助...
过滤掉网格。和高对比度
由于我没有发布图片的声誉,我添加了链接。 带有低对比度线条的图像:
检测到线路:
【问题讨论】:
-
您能否编辑您的问题并附上示例图片?
-
没有代表,但我将它们上传到其他地方并添加了链接。
标签: opencv line feature-detection noise hough-transform