hough空间(离散极坐标)的表示 原因: 图像中直线的表示,由斜率和截距表示,而极坐标中用(r, theta)表示. r = cos(theta)*x + sin(theta)*y ##测直线cv.HoughLines算法不够完善需要代码补充 ,cv.HoughLinesP则算法补充 import cv2 as cv import numpy as np def line_detection(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) edges = cv.Canny(gray, 50, 150, apertureSize=3) lines = cv.HoughLines(edges, 1, np.pi/180, 200) for line in lines: print(type(lines)) rho, theta = line[0] #rho极径参数的距离分辨率 theta极角参数的角度分辨率 a = np.cos(theta) b = np.sin(theta) x0 = a * rho y0 = b * rho x1 = int(x0+1000*(-b)) y1 = int(y0+1000*(a)) x2 = int(x0-1000*(-b)) y2 = int(y0-1000*(a)) cv.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2) cv.imshow("image-lines", image) def line_detect_possible_demo(image): gray = cv.cvtColor(image, cv.COLOR_BGR2GRAY) edges = cv.Canny(gray, 50, 150, apertureSize=3) lines = cv.HoughLinesP(edges, 1, np.pi/180, 100, minLineLength=50, maxLineGap=10) for line in lines: print(type(line)) x1, y1, x2, y2 = line[0] cv.line(image, (x1, y1), (x2, y2), (0, 0, 255), 2) cv.imshow("line_detect_possible_demo", image) src = cv.imread("C:/Users/weiqiangwen/Desktop/sest/morph01.png") # cv.namedWindow("input contours",cv.WINDOW_AUTOSIZE) cv.imshow("contours", src) line_detection(src) line_detect_possible_demo(src) cv.waitKey(0) cv.destroyAllWindows() print("--------- Python OpenCV Tutorial ---------")
第十五天霍夫直线检测
最新推荐文章于 2022-04-09 20:27:10 发布