import numpy as np
import matplotlib.pyplot as plt
import cv2 as cv
plt.rcParams['font.family'] = ['sans-serif']
plt.rcParams['font.sans-serif'] = ['SimHei']
1.Harris角点检测
chessboard = cv.imread('img/chessboard.jpg')
gray = cv.cvtColor(chessboard,cv.COLOR_BGR2GRAY)
gray = np.float32(gray)
res = cv.cornerHarris(gray,2,3,0.04)
chessboard[res>0.001*res.max()] = [0,0,255]
plt.figure(dpi=500)
plt.imshow(chessboard[:,:,::-1])
<matplotlib.image.AxesImage at 0x1c37f82f6a0>
2.Shi-Tomasi角点检测
tv = cv.imread('img/tv.jpg')
gray = cv.cvtColor(tv,cv.COLOR_BGR2GRAY)
res = cv.goodFeaturesToTrack(gray,1000,0.01,10)
res
array([[[ 39., 363.]],
[[ 39., 424.]],
[[216., 431.]],
...,
[[450., 209.]],
[[331., 198.]],
[[365., 421.]]], dtype=float32)
for i in res:
x,y = i.ravel()
cv.circle(tv,(int(x),int(y)),2,(0,0,255),-1)
plt.figure(dpi=400)
plt.imshow(tv[:,:,::-1])
<matplotlib.image.AxesImage at 0x1c353603910>
总结