本文主要是介绍【OpenCV】82 角点检测—shi-tomas角点检测,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
82 角点检测—shi-tomas角点检测
代码
import numpy as np
import cv2 as cvdef process(image, opt=1):# Detecting cornersgray = cv.cvtColor(image, cv.COLOR_BGR2GRAY)corners = cv.goodFeaturesToTrack(gray, 100, 0.05, 10)print(len(corners))for pt in corners:print(pt)b = np.random.random_integers(0, 256)g = np.random.random_integers(0, 256)r = np.random.random_integers(0, 256)x = np.int32(pt[0][0])y = np.int32(pt[0][1])cv.circle(image, (x, y), 5, (int(b), int(g), int(r)), 2)# outputreturn imagesrc = cv.imread("../images/box.bmp")
cv.imshow("input", src)
result = process(src)
cv.imshow('result', result)
cv.waitKey(0)
cv.destroyAllWindows()
实验结果
解释
Harris角点检测是一种计算速度很慢的角点检测算法,很难实时计算,所有最常用的是shi-tomas角点检测算法,它的运行速度很快。
OpenCV中相关API与解释如下:
corners = cv.goodFeaturesToTrack(image, maxCorners, qualityLevel, minDistance[, corners[, mask[, blockSize[, useHarrisDetector[, k]]]]])
image
单通道输入图像,八位或者浮点数maxCorners
表示最大返回关键点数目qualityLevel
表示拒绝的关键点 R < qualityLevel × max response将会被直接丢弃minDistance
表示两个关键点之间的最短距离corners
是输出的关键点坐标集合mask
表示mask区域,如果有表明只对mask区域做计算blockSize
计算梯度与微分的窗口区域useHarrisDetector
表示是否使用harris角点检测,默认是false 为shi-tomask
= 0.04默认值,当useHarrisDetector为ture时候起作用
所有内容均来源于贾志刚老师的知识星球——OpenCV研习社,本文为个人整理学习,已获得贾老师授权,有兴趣、有能力的可以加入贾老师的知识星球进行深入学习。
这篇关于【OpenCV】82 角点检测—shi-tomas角点检测的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!