角点检测——opencv实战6
【代码】角点检测——opencv实战6。
·
import cv2
image = cv2.imread("opencv_logo.jpg")
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)#角点检测基于灰度梯度变化实现,通过提取图像亮度信息,消除色彩干扰,提高特征点检测的稳定性与准确性。
corners = cv2.goodFeaturesToTrack(gray, 500, 0.1, 10)
'''
角点检测,找图像中突出的拐角/关键点;
gray:输入灰度图;500:最多检测500个角点;0.1:角点质量等级(值越高,筛选的角点越优质);10:角点之间的最小距离(避免扎堆)
返回格式是三维数组:
[
[[x1, y1]], <-- 第一个角点
[[x2, y2]], <-- 第二个角点
[[x3, y3]] <-- 第三个角点
]
'''
for corner in corners: # 遍历检测到的所有角点
x, y = corner.ravel() # ravel():把多维数组展平成一维,取出x、y坐标(坐标是浮点数):[[x, y]] → ravel() → [x, y]
cv2.circle(image, (int(x), int(y)), 3, (255, 0, 255), -1) # 在原图上画圆标记角点; (int(x),int(y)):角点坐标(必须转整数); 3:圆的半径;(255,0,255):颜色=紫色(BGR格式);-1:实心填充圆
cv2.imshow("corners", image)
cv2.waitKey() #不加cv2.destroyAllWindows(),也可正常运行

更多推荐
所有评论(0)