图像检索以及基于图像描述的搜索
角点检测#!/user/bin/ env python# -*- coding:utf-8 -*-# Author:import cv2import numpy as npimg = cv2.imread('./chess_board.png')#img = cv2.imread('./mei.jpg')gray = cv2.cvtColor(img,cv2.COLOR_...
·
角点检测
#!/user/bin/ env python
# -*- coding:utf-8 -*-
# Author:
import cv2
import numpy as np
img = cv2.imread('./chess_board.png')
#img = cv2.imread('./mei.jpg')
gray = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
gray = np.float32(gray)
dst = cv2.cornerHarris(gray,2,23,0.04)
'''这段代码,使用常用的方法加载棋盘图像,为了使得cornerHarris函数可以计算,需要将棋盘图像转化为灰度格式,
然后调用cornerHarris函数.
这里最重要的是第三个参数,该参数限定了Sobel算子的中孔(aperture)
Sobel算子通过对图像行、列的变化检测来检测边缘,Sobel算子会通过核来完成检测
简单的来说,该参数定义了角点检测的敏感度,其取值必须是介于3-31之间的奇数
'''
img[dst>0.01 *dst.max()] = [0,0,255]
'''
这行代码会将检测到的角点标记为红色,调整cornerHarris的第二个参数可以改变这种情况
即参数值越小,标记角点记号越小
'''
while(True):
cv2.imshow('corners',img)
if cv2.waitKey(100//12) & 0xff == ord("q"):
'''
在进行测试例子的时候,总是出现TypeError
主要原因是因为cv2.resize内的参数是要求为整数
而python3中的
'/'(除法),最后的结果自动转为浮点数
所以使用
'//'
运算,最后成功'''
break
cv2.waitKey()
cv2.destroyAllWindows()

更多推荐



所有评论(0)