簡體   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