优化哈里斯角
import cv2
import numpy as np
import matplotlib.pyplot as plt
img = cv2.imread('cube.jpg') #打开图像,默认为BGR格式
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) #转换为灰度图像
gray = np.float32(gray) #转换为浮点类型
dst = cv2.cornerHarris(gray,8,7,0.04) #查找哈里斯角
r, dst = cv2.threshold(dst,0.01*dst.max(),255,0) #二值化阈值处理
dst = np.uint8(dst) #转换为整型
r,l,s,cxys = cv2.connectedComponentsWithStats(dst) #查找质点坐标
cif = (cv2.TERM_CRITERIA_EPS +
cv2.TERM_CRITERIA_MAX_ITER, 100, 0.001) #定义优化查找条件
corners = cv2.cornerSubPix(gray,
np.float32(cxys),(5,5),(-1,-1),cif) #执行优化查找
res = np.hstack((cxys,corners)) #堆叠构造新数组,便于标注角
res = np.int0(res) #转换为整型
img[res[:,1],res[:,0]]=[0,0,255] #将哈里斯角对应像素设置为红色
img[res[:,3],res[:,2]] = [0,255,0] #将优化结果像素设置为绿色
img = cv2.cvtColor(img,cv2.COLOR_BGR2RGB) #转换为RGB格式
plt.imshow(img)
plt.axis('off')
plt.show() #显示检测结果