OpenCV ORB算法实现及与SIFT、SURF算法比较
OpenCV ORB算法实现及与SIFT、SURF算法比较
由于SIFT算法和SURF算法的专利问题,OpenCV的最新版本(4.5.4)已经删除了SIFT和SURF算法的实现。因此,下面的代码仅提供ORB算法的实现和比较。
import cv2
import time
# 读取图像并转换为灰度图像
img = cv2.imread('test.jpg')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)
# 创建ORB对象
ORB = cv2.ORB_create()
# 计时器
start_time = time.time()
# ORB算法检测关键点和计算描述符
keypts, descs = ORB.detectAndCompute(gray, None)
# 输出ORB算法用时
print('ORB algorithm time: %s seconds.' % (time.time() - start_time))
# 显示ORB算法检测到的关键点
img_kp = cv2.drawKeypoints(img, keypts, None)
cv2.imshow('ORB KeyPoints', img_kp)
# 等待按下任意按键退出程序
cv2.waitKey(0)
cv2.destroyAllWindows()
可以发现,ORB算法比较简单,只需要使用cv2.ORB_create()创建ORB对象,然后使用ORB.detectAndCompute()方法检测关键点和计算描述符即可。
对于SIFT和SURF算法,可以使用cv2.xfeatures2d模块进行实现,但需要注意的是,这些算法的专利问题已经导致在OpenCV的最新版本中被删除,因此需要使用旧版本的OpenCV或者其他第三方库来实现。
原文地址: https://www.cveoy.top/t/topic/n2r0 著作权归作者所有。请勿转载和采集!