最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Opencv Python實(shí)現(xiàn)兩幅圖像匹配

 更新時(shí)間:2021年06月22日 14:45:11   作者:Scarlett2025  
這篇文章主要為大家詳細(xì)介紹了Opencv Python實(shí)現(xiàn)兩幅圖像匹配,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下

本文實(shí)例為大家分享了Opencv Python實(shí)現(xiàn)兩幅圖像匹配的具體代碼,供大家參考,具體內(nèi)容如下

原圖

import cv2

img1 = cv2.imread('SURF_2.jpg', cv2.IMREAD_GRAYSCALE)
img1 = cv2.resize(img1,dsize=(600,400))
img2 = cv2.imread('SURF_1.jpg', cv2.IMREAD_GRAYSCALE)
img2 = cv2.resize(img2,dsize=(600,400))
image1 = img1.copy()
image2 = img2.copy()


#創(chuàng)建一個(gè)SURF對(duì)象
surf = cv2.xfeatures2d.SURF_create(25000)
#SIFT對(duì)象會(huì)使用Hessian算法檢測(cè)關(guān)鍵點(diǎn),并且對(duì)每個(gè)關(guān)鍵點(diǎn)周圍的區(qū)域計(jì)算特征向量。該函數(shù)返回關(guān)鍵點(diǎn)的信息和描述符
keypoints1,descriptor1 = surf.detectAndCompute(image1,None)
keypoints2,descriptor2 = surf.detectAndCompute(image2,None)
# print('descriptor1:',descriptor1.shape(),'descriptor2',descriptor2.shape())
#在圖像上繪制關(guān)鍵點(diǎn)
image1 = cv2.drawKeypoints(image=image1,keypoints = keypoints1,outImage=image1,color=(255,0,255),flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
image2 = cv2.drawKeypoints(image=image2,keypoints = keypoints2,outImage=image2,color=(255,0,255),flags=cv2.DRAW_MATCHES_FLAGS_DRAW_RICH_KEYPOINTS)
#顯示圖像
cv2.imshow('surf_keypoints1',image1)
cv2.imshow('surf_keypoints2',image2)
cv2.waitKey(20)


matcher = cv2.FlannBasedMatcher()
matchePoints = matcher.match(descriptor1,descriptor2)
# print(type(matchePoints),len(matchePoints),matchePoints[0])

#提取強(qiáng)匹配特征點(diǎn)
minMatch = 1
maxMatch = 0
for i in range(len(matchePoints)):
    if minMatch > matchePoints[i].distance:
        minMatch = matchePoints[i].distance
    if maxMatch < matchePoints[i].distance:
        maxMatch = matchePoints[i].distance
    print('最佳匹配值是:',minMatch)
    print('最差匹配值是:',maxMatch)

#獲取排雷在前邊的幾個(gè)最優(yōu)匹配結(jié)果
goodMatchePoints = []
for i in range(len(matchePoints)):
    if matchePoints[i].distance < minMatch + (maxMatch-minMatch)/16:
        goodMatchePoints.append(matchePoints[i])

#繪制最優(yōu)匹配點(diǎn)
outImg = None
outImg = cv2.drawMatches(img1,keypoints1,img2,keypoints2,goodMatchePoints,outImg,
                         matchColor=(0,255,0),flags=cv2.DRAW_MATCHES_FLAGS_DEFAULT)
cv2.imshow('matche',outImg)
cv2.waitKey(0)
cv2.destroyAllWindows()

原圖

#coding=utf-8
import cv2
from matplotlib import pyplot as plt

img=cv2.imread('xfeatures2d.SURF_create2.jpg',0)
# surf=cv2.SURF(400)   #Hessian閾值400
# kp,des=surf.detectAndCompute(img,None)
# leng=len(kp)
# print(leng)
# 關(guān)鍵點(diǎn)太多,重取閾值

surf=cv2.cv2.xfeatures2d.SURF_create(50000)   #Hessian閾值50000
kp,des=surf.detectAndCompute(img,None)
leng=len(kp)
print(leng)

img2=cv2.drawKeypoints(img,kp,None,(255,0,0),4)
plt.imshow(img2)
plt.show()

# 下面是U-SURF算法,關(guān)鍵點(diǎn)朝向一致,運(yùn)算速度加快。
surf.upright=True
kp=surf.detect(img,None)
img3=cv2.drawKeypoints(img,kp,None,(255,0,0),4)

plt.imshow(img3)
plt.show()

#檢測(cè)關(guān)鍵點(diǎn)描述符大小,改64維成128維
surf.extended=True
kp,des=surf.detectAndCompute(img,None)
dem1=surf.descriptorSize()
print(dem1)
shp1=des.shape()
print(shp1)

效果圖

import cv2
from matplotlib import pyplot as plt

leftImage = cv2.imread('xfeatures2d.SURF_create_1.jpg')
rightImage = cv2.imread('xfeatures2d.SURF_create_2.jpg')

# 創(chuàng)造sift
sift = cv2.xfeatures2d.SIFT_create()
kp1, des1 = sift.detectAndCompute(leftImage, None)
kp2, des2 = sift.detectAndCompute(rightImage, None)  # 返回關(guān)鍵點(diǎn)信息和描述符

FLANN_INDEX_KDTREE = 0
indexParams = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)
searchParams = dict(checks=50)  # 指定索引樹要被遍歷的次數(shù)

flann = cv2.FlannBasedMatcher(indexParams, searchParams)
matches = flann.knnMatch(des1, des2, k=2)
matchesMask = [[0, 0] for i in range(len(matches))]
print("matches", matches[0])
for i, (m, n) in enumerate(matches):
    if m.distance < 0.07 * n.distance:
        matchesMask[i] = [1, 0]

drawParams = dict(matchColor=(0, 255, 0), singlePointColor=None,
                  matchesMask=matchesMask, flags=2)  # flag=2只畫出匹配點(diǎn),flag=0把所有的點(diǎn)都畫出
resultImage = cv2.drawMatchesKnn(leftImage, kp1, rightImage, kp2, matches, None, **drawParams)
plt.imshow(resultImage)
plt.show()

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Python字符串拼接六種方法介紹

    Python字符串拼接六種方法介紹

    這篇文章主要介紹了Python字符串拼接六種方法介紹,具有一定借鑒價(jià)值,需要的朋友看可以參考下。
    2017-12-12
  • django之使用celery-把耗時(shí)程序放到celery里面執(zhí)行的方法

    django之使用celery-把耗時(shí)程序放到celery里面執(zhí)行的方法

    今天小編就為大家分享一篇django之使用celery-把耗時(shí)程序放到celery里面執(zhí)行的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-07-07
  • Python實(shí)現(xiàn)大文件排序的方法

    Python實(shí)現(xiàn)大文件排序的方法

    這篇文章主要介紹了Python大文件排序的方法,涉及Python針對(duì)文件、緩存及日期等操作的相關(guān)技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2015-07-07
  • Python讀取實(shí)時(shí)數(shù)據(jù)流示例

    Python讀取實(shí)時(shí)數(shù)據(jù)流示例

    今天小編就為大家分享一篇Python讀取實(shí)時(shí)數(shù)據(jù)流示例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-12-12
  • django 鏈接多個(gè)數(shù)據(jù)庫(kù) 并使用原生sql實(shí)現(xiàn)

    django 鏈接多個(gè)數(shù)據(jù)庫(kù) 并使用原生sql實(shí)現(xiàn)

    這篇文章主要介紹了django 鏈接多個(gè)數(shù)據(jù)庫(kù) 并使用原生sql實(shí)現(xiàn),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-03-03
  • python實(shí)現(xiàn)SMTP郵件發(fā)送功能

    python實(shí)現(xiàn)SMTP郵件發(fā)送功能

    這篇文章主要為大家詳細(xì)介紹了python實(shí)現(xiàn)SMTP郵件發(fā)送功能的相關(guān)資料,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2016-05-05
  • 如何實(shí)現(xiàn)Django Rest framework版本控制

    如何實(shí)現(xiàn)Django Rest framework版本控制

    這篇文章主要介紹了如何實(shí)現(xiàn)Django Rest framework版本控制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2019-07-07
  • opencv導(dǎo)入頭文件時(shí)報(bào)錯(cuò)#include的解決方法

    opencv導(dǎo)入頭文件時(shí)報(bào)錯(cuò)#include的解決方法

    這篇文章主要介紹了opencv導(dǎo)入頭文件時(shí)報(bào)錯(cuò)#include的解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-07-07
  • Python基于Django實(shí)現(xiàn)驗(yàn)證碼登錄功能

    Python基于Django實(shí)現(xiàn)驗(yàn)證碼登錄功能

    驗(yàn)證碼登錄是一種常見(jiàn)的身份驗(yàn)證方式,它可以有效防止惡意攻擊和機(jī)器人登錄,本文將介紹如何基于Python?Django實(shí)現(xiàn)驗(yàn)證碼登錄功能,需要的可以參考一下
    2023-05-05
  • Django框架orM與自定義SQL語(yǔ)句混合事務(wù)控制操作

    Django框架orM與自定義SQL語(yǔ)句混合事務(wù)控制操作

    這篇文章主要介紹了Django框架orM與自定義SQL語(yǔ)句混合事務(wù)控制操作,結(jié)合實(shí)例形式分析了同一個(gè)方法里面既有ORM又有自定義SQL 語(yǔ)句的情況下事務(wù)控制相關(guān)操作技巧,需要的朋友可以參考下
    2019-06-06

最新評(píng)論

肃北| 梁山县| 桦南县| 襄汾县| 名山县| 广南县| 亚东县| 东兴市| 垦利县| 阳曲县| 义马市| 陆河县| 垣曲县| 长寿区| 汝南县| 南投市| 沅陵县| 镶黄旗| 无为县| 新津县| 吉林省| 万全县| 章丘市| 临邑县| 宝兴县| 新乡市| 临武县| 东安县| 河曲县| 甘孜| 泰和县| 化德县| 钦州市| 四平市| 定西市| 台南市| 威远县| 诸城市| 威宁| 缙云县| 特克斯县|