繁体   English   中英

使用OpenCV识别图像上的线

[英]Identify a line on an image using OpenCV

这是我要处理的框架 我想在图像中识别一条线。 虽然,我通过Canny Edge检测做到了这一点,但我也尝试使用拐角(期望点覆盖大多数线条)。 与直觉相反,图像中的噪点上出现的点多于实际线条。 我想知道是否有人知道OpenCV(Python)中的功能,可以智能地连接这些点,仅通过线连接,而不是噪声。

帮助将不胜感激。 我想找出这条黑线

import cv2
import numpy as np

img = cv2.imread('fw1.jpeg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
edges = cv2.Canny(gray,50,150,apertureSize = 3)
minLineLength = 100
maxLineGap = 10
lines = cv2.HoughLinesP(edges,1,np.pi/180,100,minLineLength,maxLineGap)
for x1,y1,x2,y2 in lines[0]:
    cv2.line(img,(x1,y1),(x2,y2),(0,255,0),2)

cv2.imwrite('houghlines5.jpg',img)

我认为您应该首先增加对比度并消除噪音。 对比度增加描述如下: https : //stackoverflow.com/a/46522515/8682088

上面的代码:

cv::Mat img = cv::imread("E:\\Workspace\\KS\\excercise\\oBwBH.jpg", 0);
cv::Mat workingMat;
cv::GaussianBlur(img, workingMat, cv::Size(101, 101), 31, 31); //high blur to extract background light
img = img - 0.7*work; //adjust light level
cv::normalize(img, img, 0, 255, cv::NORM_MINMAX); \\use whole range
cv::medianBlur(img, img, 5); \\remove noise
cv::Canny(img, work, 100, 200); \\extract lines; you could do hough lines instead since it has canny inside.

之后,我建议在opencv库中使用HoughLines或HoughLinesP。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM