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(),也可正常运行

在这里插入图片描述

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐