国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

opencv 進(jìn)階15-檢測DoG特征并提取SIFT描述符cv2.SIFT_create()

這篇具有很好參考價值的文章主要介紹了opencv 進(jìn)階15-檢測DoG特征并提取SIFT描述符cv2.SIFT_create()。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

前面我們已經(jīng)了解了Harris函數(shù)來進(jìn)行角點(diǎn)檢測,因?yàn)榻屈c(diǎn)的特性,這些角點(diǎn)在圖像旋轉(zhuǎn)的時候也可以被檢測到。但是,如果我們放大或縮小圖像時,就可能會丟失圖像的某些部分,甚至有可能增加角點(diǎn)的質(zhì)量。這種損失的現(xiàn)象需要一種與圖像比例無關(guān)的角點(diǎn)檢測方法來解決。

SIFT(Scale-Invariant Feature Transform)尺度不變特征變換可以解決這個問題。

注意: SIFT 并不檢測關(guān)鍵點(diǎn)(關(guān)鍵點(diǎn)由Difference of Gaussians檢測),SIFT會通過一個特征向量來描述關(guān)鍵點(diǎn)周圍區(qū)域的情況。DoG操作的最終結(jié)果會得到感興趣的區(qū)域(關(guān)鍵點(diǎn)),這將通過SIFT來進(jìn)行說明。

函數(shù)說明:

sift =cv2.SIFT_create([, nfeatures[, nOctaveLayers[,
contrastThreshold[, edgeThreshold]]]])

參數(shù)

  • nfeatures: 保留的最佳功能的數(shù)量。這些特征按其分?jǐn)?shù)排名(在SIFT算法中作為局部對比度測量)。

  • nOctaveLayers:每個八度中的層數(shù)。3是D.Lowe(原作者)論文中使用的值。八度的數(shù)量是根據(jù)圖像分辨率自動計算的。

  • contrastThreshold:用于過濾掉半均勻(低對比度)區(qū)域中的弱特征的對比度閾值。閾值越大,檢測器產(chǎn)生的特征越少。應(yīng)用過濾時,對比度閾值將被nOctaveLayers除。當(dāng)nOctaveLayers設(shè)置為默認(rèn)值并且如果要使用D.Lowe論文中使用的值0.03時,請將此參數(shù)設(shè)置為0.09。

  • edgeThreshold:用于過濾邊緣特征的閾值。請注意,其含義與contrastThreshold不同,即edgeThreshold越大,濾除的特征越少(保留的特征越多)。

返回值

  • sift:實(shí)例化一個sift特征檢測器。

示例:對圖像檢測DoG特征并提取SIFT描述符

實(shí)驗(yàn)原圖:

opencv 進(jìn)階15-檢測DoG特征并提取SIFT描述符cv2.SIFT_create(),opencv 進(jìn)階,計算機(jī)視覺,人工智能,opencv,人工智能,計算機(jī)視覺

import cv2
import numpy as np

img = cv2.imread('images\\sumian.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

sift = cv2.xfeatures2d.SIFT_create()
keypoints, descriptor = sift.detectAndCompute(gray, None)

img = cv2.drawKeypoints(image= img, outImage= img, keypoints= keypoints, flags= cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS, color= (0, 0, 255))

cv2.imshow('sift', img)
cv2.waitKey()
cv2.destroyAllWindows()

發(fā)現(xiàn)是,如果你沿用之前的代碼即

descriptor = cv2.xfeatures2d.SIFT_create()

會出現(xiàn)一個warning,但不影響結(jié)果。

[ WARN:0@0.037] global shadow_sift.hpp:15 cv::xfeatures2d::SIFT_create DEPRECATED: cv.xfeatures2d.SIFT_create() is deprecated due SIFT tranfer to the main repository. https://github.com/opencv/opencv/issues/16736

這是因?yàn)樾掳姹镜腟IFT可以直接引用,不再需要安裝contrib包,即

descriptor = cv2.SIFT_create()

官方公告可參見 OpenCV Google Summer of Code 2020

opencv 進(jìn)階15-檢測DoG特征并提取SIFT描述符cv2.SIFT_create(),opencv 進(jìn)階,計算機(jī)視覺,人工智能,opencv,人工智能,計算機(jī)視覺

新代碼如下:

import cv2


img = cv2.imread('images\\sumiao.png')
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)

#sift = cv2.xfeatures2d.SIFT_create()
sift = cv2.SIFT_create()
keypoints, descriptor = sift.detectAndCompute(gray, None)

img = cv2.drawKeypoints(image= img, outImage= img, keypoints= keypoints, flags= cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS, color= (0, 0, 255))

cv2.imshow('sift', img)
cv2.waitKey()
cv2.destroyAllWindows()

運(yùn)行效果:

opencv 進(jìn)階15-檢測DoG特征并提取SIFT描述符cv2.SIFT_create(),opencv 進(jìn)階,計算機(jī)視覺,人工智能,opencv,人工智能,計算機(jī)視覺文章來源地址http://www.zghlxwxcb.cn/news/detail-673921.html

到了這里,關(guān)于opencv 進(jìn)階15-檢測DoG特征并提取SIFT描述符cv2.SIFT_create()的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包