日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

OpenCV SIFT检测关键点

發(fā)布時(shí)間:2025/5/22 72 豆豆
生活随笔 收集整理的這篇文章主要介紹了 OpenCV SIFT检测关键点 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

SIFT原理:

  • 尺度空間極值檢測(cè):構(gòu)建高斯金字塔,高斯差分金字塔,檢測(cè)極值點(diǎn)。

  • 關(guān)鍵點(diǎn)定位:去除對(duì)比度較小和邊緣對(duì)極值點(diǎn)的影響。

  • 關(guān)鍵點(diǎn)方向確定:利用梯度直方圖確定關(guān)鍵點(diǎn)的方向。

  • 關(guān)鍵點(diǎn)描述:對(duì)關(guān)鍵點(diǎn)周?chē)鷪D像區(qū)域分塊,計(jì)算塊內(nèi)的梯度直方圖,生成具有特征向量,對(duì)關(guān)鍵點(diǎn)信息進(jìn)行描述。

在OpenCV中利用SIFT檢測(cè)關(guān)鍵點(diǎn)的流程如下所示:

1.實(shí)例化sift

sift = cv.xfeatures2d.SIFT_create()

2.利用sift.detectAndCompute()檢測(cè)關(guān)鍵點(diǎn)并計(jì)算

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

參數(shù):

  • gray: 進(jìn)行關(guān)鍵點(diǎn)檢測(cè)的圖像,注意是灰度圖像

返回:

  • kp: 關(guān)鍵點(diǎn)信息,包括位置,尺度,方向信息
  • des: 關(guān)鍵點(diǎn)描述符,每個(gè)關(guān)鍵點(diǎn)對(duì)應(yīng)128個(gè)梯度信息的特征向量

3.將關(guān)鍵點(diǎn)檢測(cè)結(jié)果繪制在圖像上

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

參數(shù):

  • image: 原始圖像
  • keypoints:關(guān)鍵點(diǎn)信息,將其繪制在圖像上
  • outputimage:輸出圖片,可以是原始圖像
  • color:顏色設(shè)置,通過(guò)修改(b,g,r)的值,更改畫(huà)筆的顏色,b=藍(lán)色,g=綠色,r=紅色。
  • flags:繪圖功能的標(biāo)識(shí)設(shè)置
    1.cv2.DRAW_MATCHES_FLAGS_DEFAULT:創(chuàng)建輸出圖像矩陣,使用現(xiàn)存的輸出圖像繪制匹配對(duì)和特征點(diǎn),對(duì)每一個(gè)關(guān)鍵點(diǎn)只繪制中間。
    2.cv2.DRAW_MATCHES_FLAGS_DRAW_OVER_OUTIMG:不創(chuàng)建輸出圖像矩陣,而是在輸出圖像上繪制匹配對(duì)。
    3.cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS:對(duì)每一個(gè)特征點(diǎn)繪制帶大小和方向的關(guān)鍵點(diǎn)圖形。
    4.cv2.DRAW_MATCHES_FLAGS_NOT_DRAW_SINGLE_POINTS:單點(diǎn)的特征點(diǎn)不被繪制。
import cv2 as cv import matplotlib.pyplot as plt# 1 讀取圖像 img = cv.imread('./1.jpg') gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)# 2 sift關(guān)鍵點(diǎn)檢測(cè) # 2.1 實(shí)例化sift對(duì)象 sift = cv.xfeatures2d.SIFT_create()# 2.2 關(guān)鍵點(diǎn)檢測(cè):kp關(guān)鍵點(diǎn)信息包括方向,尺度,位置信息,des是關(guān)鍵點(diǎn)的描述符 kp, des = sift.detectAndCompute(gray, None)# 2.3 在圖像上繪制關(guān)鍵點(diǎn)的檢測(cè)結(jié)果 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檢測(cè)') plt.xticks([]), plt.yticks([]) plt.show()

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。