opencv图像特征
时间: 2023-11-18 12:06:12 浏览: 37
OpenCV是一个广泛使用的计算机视觉库,其中包含了许多用于图像特征提取的算法。以下是两种常用的图像特征提取算法及其代码示例:
1. SIFT算法
SIFT算法是一种计算密集的算法,对于大型图像或大量特征点的场景,可能会耗费很长时间。特征点的数量和质量决定了SIFT算法的效果,可以根据需要调整算法参数以获得更好的效果。
```python
import cv2 as cv
img = cv.imread('img/corner.jpg')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# 创建一个 SIFT 特征检测器
sift = cv.SIFT_create()
# 进行检测,返回关键点数组 keypoints
kp = sift.detect(gray, None)
# cv.drawKeypoints()是OpenCV 中用于绘制关键点的函数之一。# 它可以将检测到的关键点绘制在图像上,以便于我们观察和分析。
img = cv.drawKeypoints(img, kp, outImage=None)
cv.imshow('SIFT', img)
cv.waitKey(0)
cv.destroyAllWindows()
```
2. ORB算法
ORB是Oriented FAST and Rotated BRIEF的缩写,是一种快速且具有旋转不变性的特征检测算法。
```python
import cv2 as cv
img = cv.imread('img/corner.jpg')
gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
# 创建一个ORB对象,声明一些参数
orb = cv.ORB_create(nfeatures=500, scaleFactor=1.2, nlevels=8, edgeThreshold=15, patchSize=31)
# 进行检测,返回关键点数组 kp 和描述符数组 des
kp, des = orb.detectAndCompute(gray, None)
# 绘制keypoints
img = cv.drawKeypoints(img, kp, outImage=None)
cv.imshow('ORB', img)
cv.waitKey(0)
cv.destroyAllWindows()
```