# @Time :2021/9/17 16:21
# @Author :罗虎
# @Email :319769805@qq.com
import numpy as np
import cv2 as cv
import matplotlib.pyplot as plt
#1读取图像
img = cv.imread("D:/pythonProject/images/sanjiao.jpeg")
gray = cv.cvtColor(img,cv.COLOR_RGB2GRAY)
#2角点检测
#API:cv.goodFeaturesToTrack(source,maxCorners,qualityLevel,minDistance)
# maxCorners: 角点个数
# qualityLevel: 角点质量水平
# minDistance: 角点间最小欧氏距离
cv.goodFeaturesToTrack()
coners = cv.goodFeaturesToTrack(gray,100,0.01,10)
#3绘制角点
for i in coners:
x,y = i.ravel()
cv.circle(img,(int(x),int(y)),6,(0,20,255),-1)
plt.figure(figsize=(10,8),dpi=100)
plt.imshow(img[:,:,::-1])
plt.title("Shi-Tomaas角点检测")
plt.xticks([])
plt.yticks([])
plt.show()
需要注意的点:x,y =i.ravel()返回的是浮点数,cv.circle( )里的圆心坐标要求用int型,所以需要将x,y强转为int型
原图:
运行结果图: