日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

OpenCV SIFT检测关键点

發布時間:2025/5/22 编程问答 58 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV SIFT检测关键点 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SIFT原理:

  • 尺度空間極值檢測:構建高斯金字塔,高斯差分金字塔,檢測極值點。

  • 關鍵點定位:去除對比度較小和邊緣對極值點的影響。

  • 關鍵點方向確定:利用梯度直方圖確定關鍵點的方向。

  • 關鍵點描述:對關鍵點周圍圖像區域分塊,計算塊內的梯度直方圖,生成具有特征向量,對關鍵點信息進行描述。

在OpenCV中利用SIFT檢測關鍵點的流程如下所示:

1.實例化sift

sift = cv.xfeatures2d.SIFT_create()

2.利用sift.detectAndCompute()檢測關鍵點并計算

kp,des = sift.detectAndCompute(gray,None)

參數:

  • gray: 進行關鍵點檢測的圖像,注意是灰度圖像

返回:

  • kp: 關鍵點信息,包括位置,尺度,方向信息
  • des: 關鍵點描述符,每個關鍵點對應128個梯度信息的特征向量

3.將關鍵點檢測結果繪制在圖像上

cv.drawKeypoints(image, keypoints, outputimage, color, flags)

參數:

  • image: 原始圖像
  • keypoints:關鍵點信息,將其繪制在圖像上
  • outputimage:輸出圖片,可以是原始圖像
  • color:顏色設置,通過修改(b,g,r)的值,更改畫筆的顏色,b=藍色,g=綠色,r=紅色。
  • flags:繪圖功能的標識設置
    1.cv2.DRAW_MATCHES_FLAGS_DEFAULT:創建輸出圖像矩陣,使用現存的輸出圖像繪制匹配對和特征點,對每一個關鍵點只繪制中間。
    2.cv2.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG:不創建輸出圖像矩陣,而是在輸出圖像上繪制匹配對。
    3.cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS:對每一個特征點繪制帶大小和方向的關鍵點圖形。
    4.cv2.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS:單點的特征點不被繪制。
import cv2 as cv import matplotlib.pyplot as plt# 1 讀取圖像 img = cv.imread('./1.jpg') gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)# 2 sift關鍵點檢測 # 2.1 實例化sift對象 sift = cv.xfeatures2d.SIFT_create()# 2.2 關鍵點檢測:kp關鍵點信息包括方向,尺度,位置信息,des是關鍵點的描述符 kp, des = sift.detectAndCompute(gray, None)# 2.3 在圖像上繪制關鍵點的檢測結果 cv.drawKeypoints(img, kp, img, flags=cv.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)# 3 圖像顯示 plt.figure(figsize=(8, 6), dpi=100) plt.imshow(img[:, :, ::-1]), plt.title('sift檢測') plt.xticks([]), plt.yticks([]) plt.show()

總結

以上是生活随笔為你收集整理的OpenCV SIFT检测关键点的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。