输出:
#使用函数cv2.HoughLinesP()对一幅图像进行霍夫变换,并观察图像的检测效果 import cv2 import numpy as np import matplotlib.pyplot as plt img=cv2.imread('./image/Building.jpg',-1) gray=cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) edges=cv2.Canny(gray,50,150,apertureSize=3) orgb=cv2.cvtColor(img,cv2.COLOR_BGR2RGB) oShow=orgb.copy() lines=cv2.HoughLinesP(edges,1,np.pi/180,1,minLineLength=100,maxLineGap=10) for line in lines: x1,y1,x2,y2=line[0] cv2.line(orgb,(x1,y1),(x2,y2),(255,0,0),5) plt.subplot(121) plt.imshow(oShow) plt.axis('off') plt.subplot(122) plt.imshow(orgb) plt.axis('off') plt.show()输出:
#使用HoughLinesCircles()函数对一幅图像进行霍夫变换,并观察检测效果 import cv2 import numpy as np import matplotlib.pyplot as plt img=cv2.imread('./image/chess.jpeg',0) imgo=cv2.imread('./image/chess.jpeg',-1) o=cv2.cvtColor(imgo,cv2.COLOR_BGR2RGB) oshow=o.copy() #中值滤波 img=cv2.medianBlur(img,5) circles=cv2.HoughCircles(img,cv2.HOUGH_GRADIENT,1,300,param1=100, param2=30,minRadius=0,maxRadius=100) circles=np.uint16(np.around(circles)) for i in circles[0,:]: cv2.circle(o,(i[0],i[1]),i[2],(255,0,0),12) cv2.circle(o,(i[0],i[1]),2,(255,0,0),12) plt.subplot(121) plt.imshow(oshow) plt.axis('off') plt.subplot(122) plt.imshow(o) plt.axis('off') plt.show()输出: