import cv2 as cv
import numpy as np
imgo = cv.imread('C:/Users/ALW/Pictures/test2.bmp')
print(imgo.shape)
imgc = cv.cvtColor(imgo, cv.COLOR_BGR2GRAY)
xbian = imgc.shape[0]
ybian = imgc.shape[1]
def cv_show(img,imgc):
cv.imshow(img,imgc)
cv.waitKey(0)
cv.destroyAllWindows()
cv_show('img',imgc)
sobelx = abs(cv.Sobel(imgc,cv.CV_64F,1,0,ksize=3))#默认ksize=3
sobely = abs(cv.Sobel(imgc,cv.CV_64F,0,1))
for i in range(1,xbian-1):
for j in range(1,ybian-1):
IXX = sobelx[i][j]*sobelx[i][j]
IXY = sobelx[i][j]*sobely[i][j]
IYY = sobely[i][j]*sobely[i][j]
M = np.mat([[IXX,IXY],[IXY,IXX]])
for xx in range(i-1, i+2):
for yy in range(j-1, j+2):
N = np.mat([[abs(xx-i)],[abs(yy-j)]])
E = np.dot(N.T,M)
Z = np.dot(E,N)
aver = []
aver.append(Z[0][0])
if np.mean(aver)>3000:
imgo[i][j] = (0,255,0)
cv_show("imgo",imgo)
Harris角点检测
比较潦草,实验课作业,参数可更改。