import cv2
import numpy as np
from skimage.io import imread
from skimage.color import rgb2gray
from skimage.measure import ransac
from skimage.util import img_as_float
from matplotlib import pylab as pylab
from skimage.feature import corner_harris, corner_subpix, corner_peaks
from skimage.transform import warp, SimilarityTransform, AffineTransform,resize
from skimage.exposure import rescale_intensity
img=cv2.imread('C:/Users/xpp/Desktop/Lena.png')#原始图像
image_gray=rgb2gray(img)#将彩色图片转换为灰度图片
coordinates=corner_harris(image_gray, k =0.001)#Harris角点检测
coordinates[coordinates>0.03*coordinates.max()]=255#阈值
corner_coordinates=corner_peaks(coordinates)#计算Harris角点
coordinates_subpix=corner_subpix(image_gray,corner_coordinates,window_size=11)#计算角点的子像素位置
pylab.figure(figsize=(20,20))
pylab.subplot(211)
pylab.imshow(coordinates,cmap='inferno')
pylab.plot(coordinates_subpix[:,1],coordinates_subpix[:,0],'r.',markersize=5,label='subpixel')
pylab.legend(prop={'size':20})
pylab.axis('off')
pylab.subplot(212)
pylab.imshow(img,interpolation='nearest')
pylab.plot(corner_coordinates[:,1],corner_coordinates[:, 0],'bo',markersize=5)
pylab.plot(coordinates_subpix[:,1],coordinates_subpix[:, 0],'r+',markersize=10)
pylab.axis('off')
pylab.tight_layout()
pylab.show()
cv2.imshow('result',img)
算法:角点精确检测是以子像素的准确率对检测到的角点进行细化。
注意:设置搜索角点的邻域(窗口)的大小值。
本文分享自 图像处理与模式识别研究所 微信公众号,前往查看
如有侵权,请联系 cloudcommunity@tencent.com 删除。
本文参与 腾讯云自媒体同步曝光计划 ,欢迎热爱写作的你一起参与!