第十五天霍夫直線檢測
阿新 • • 發佈:2018-11-03
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 ---------")