SIFT特征提取和匹配
一、sift特征原理部分:
SIFT特征詳解 - Brook_icv - 博客園 (cnblogs.com)
?sift特征提取算法_July_Zh1的博客-CSDN博客_sift特征提取算法
二、sift特征提取實踐部分:
代碼實現:Python+OpenCV
import cv2 def sift_kp(image):gray_image = cv2.cvtColor(image,cv2.COLOR_BGR2GRAY)sift = cv2.SIFT.create()kp,des = sift.detectAndCompute(image, None)#kp_image = cv2.drawKeypoints(image, kp, None)kp_image = cv2.drawKeypoints(image, kp, image, (122, 255, 122), flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)return kp_image,kp,des #image = cv2.imread('E:\pythonProject\\N2.jpg') #image = cv2.imread('E:\pythonProject\image1.jpg') image = cv2.imread('E:\pythonProject\ldh1.jpg') kp_image, _, des = sift_kp(image) print(image.shape, des.shape) cv2.namedWindow('sift features',cv2.WINDOW_NORMAL) cv2.imshow('sift features', kp_image) if cv2.waitKey(0) == 27:cv2.destroyAllWindows()老版本的OpenCV,則第四行用
sift = cv2.xfeatures2d_SIFT.create()代替?
參考:OpenCV-Python之——圖像SIFT特征提取 - 簡書 (jianshu.com)
三、sift特征的關鍵點顯示部分:
cv2.drawKeypoints(image, keypoints, outImage, color=None, flags=None)
image?? ?原始圖像,可以使三通道或單通道圖像;
keypoints?? ?特征點向量,向量內每一個元素是一個KeyPoint對象,包含了特征點的各種屬性信息;
outImage?? ?特征點繪制的畫布圖像,可以是原圖像;
color?? ?繪制的特征點的顏色信息,默認繪制的是隨機彩色;
flags?? ?特征點的繪制模式,其實就是設置特征點的那些信息需要繪制,那些不需要繪制,有以下幾種模式可選:
DRAW_MATCHES_FLAGS_DEFAULT:只繪制特征點的坐標點,顯示在圖像上就是一個個小圓點,每個小圓點的圓心坐標都是特征點的坐標。
DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG:函數不創建輸出的圖像,而是直接在輸出圖像變量空間繪制,要求本身輸出圖像變量就是一個初始化好了的,size與type都是已經初始化好的變量。
DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS :單點的特征點不被繪制。
DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS:繪制特征點的時候繪制的是一個個帶有方向的圓,這種方法同時顯示圖像的坐標,size和方向,是最能顯示特征的一種繪制方式
參考:cv2.drawKeypoints函數(opencv學習)_勤奮騷年的博客-CSDN博客_cv2.drawkeypoints
總結
以上是生活随笔為你收集整理的SIFT特征提取和匹配的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 荣耀智慧屏升级鸿蒙,鸿蒙打造 未来电视就
- 下一篇: TOF深度相机数据到点云转换(一)