欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

OpenCV特征匹配和單應(yīng)性矩陣查找對象詳解

 更新時(shí)間:2023年04月26日 11:13:44   作者:uncle_ll  
這篇文章主要為大家介紹了OpenCV特征匹配和單應(yīng)性矩陣查找對象詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪

目標(biāo)

在本章中,將學(xué)習(xí)

  • 將從Calib3D模塊中混淆特征匹配和找到(單應(yīng)性矩陣)homography,以查找復(fù)雜圖像中的已知對象。

基礎(chǔ)

在之前的內(nèi)容中,使用了一個(gè)query image,在其中找到了一些特征點(diǎn),拍攝了另一張train image,也在該圖像中找到了特征,找到了其中最好的匹配。簡而言之,在另一張雜亂的圖像中找到了物體某些部分的位置。該信息足以準(zhǔn)確地在train image上找到對象。

為此,可以使用calib3d模塊的函數(shù),即cv2.findHomography()。如果從圖像中傳遞一組點(diǎn),它將找到該對象的透視變換。然后可以使用cv2.perspectiveTransform()以查找對象。至少需要四個(gè)正確的點(diǎn)才能找到轉(zhuǎn)換。

之前的內(nèi)容中可以看到,匹配的時(shí)候可能存在一些可能的錯(cuò)誤,這可能會(huì)影響結(jié)果。為了解決這個(gè)問題,算法使用RANSACLEAST_MEDIAN(可以由標(biāo)志決定)。如此良好的匹配,提供正確估計(jì)稱為inliers,并且剩余的稱為異常值cv2.findhomography()返回一個(gè)掩碼,指定Inlier和異常值

實(shí)現(xiàn)

首先,像往常一樣,在圖像中查找SIFT特征,并應(yīng)用比率測試來找到最佳匹配。

現(xiàn)在設(shè)置了一個(gè)至少10的匹配(由min_match_count定義)的條件是在那里找到對象。否則簡單地顯示一條消息,表明不夠匹配。

**如果找到有足夠的匹配,將在兩個(gè)圖像中提取匹配項(xiàng)點(diǎn)的位置。**通過以找到相似的轉(zhuǎn)變。一旦獲得此3x3轉(zhuǎn)換矩陣,將使用它將QueryImage的角轉(zhuǎn)換為TrainImage中的對應(yīng)點(diǎn),然后畫出來。

import cv2
import numpy as np
from matplotlib import pyplot as plt

MIN_MATCH_COUNT = 10

img1 = cv2.imread('box2.png', 0)  # query image
img2 = cv2.imread('box_in_scene.png', 0)  # train image

# Initial SIFT detector
sift = cv2.xfeatures2d.SIFT_create()

# find the keypoints and descriptiors with SIFT
kp1, des1 = sift.detectAndCompute(img1, None)
kp2, des2 = sift.detectAndCompute(img2, None)

FLANN_INDEX_KDTREE = 1
index_params = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)
search_params = dict(checks=50)

flann = cv2.FlannBasedMatcher(index_params, search_params)

matches = flann.knnMatch(des1, des2, k=2)

# store all the good matches as per lows ratio test
good = []
for m, n in matches:
    if m.distance < 0.7 * n.distance:
        good.append(m)
        
if len(good) > MIN_MATCH_COUNT:
    src_pts = np.float32([ kp1[m.queryIdx].pt for m in good ]).reshape(-1,1,2)
    dst_pts = np.float32([ kp2[m.trainIdx].pt for m in good ]).reshape(-1,1,2)
    
    M, mask = cv2.findHomography(src_pts, dst_pts, cv2.RANSAC, 5.0)
    matchesMask = mask.ravel().tolist()
    
    h, w = img1.shape
    pts = np.float32([[0, 0], [0, h-1], [w-1, h-1], [w-1, 0]]).reshape(-1, 1, 2)
    dst = cv2.perspectiveTransform(pts, M)
    
    img2 = cv2.polylines(img2, [np.int32(dst)], True, 255, 3, cv2.LINE_AA)
else:
    print("Not enough matches are found - {} / {}".format(len(good), MIN_MATCH_COUNT))
    matchesMask = None

draw_params = dict(
    matchColor=(0, 255, 0),
    singlePointColor=None,
    matchesMask=matchesMask,
    flags=2)

img3 = cv2.drawMatches(img1, kp1, img2, kp2, good, None, **draw_params)
plt.imshow(img3, 'gray')
plt.show()

結(jié)果如下。在雜亂圖像中用白色顏色標(biāo)記匹配的物體

在這里插入圖片描述

附加資源

以上就是OpenCV特征匹配和單應(yīng)性矩陣查找對象詳解的詳細(xì)內(nèi)容,更多關(guān)于OpenCV特征匹配單應(yīng)性的資料請關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Python中json格式數(shù)據(jù)的編碼與解碼方法詳解

    Python中json格式數(shù)據(jù)的編碼與解碼方法詳解

    這篇文章主要介紹了Python中json格式數(shù)據(jù)的編碼與解碼方法,詳細(xì)分析了Python針對json格式數(shù)據(jù)的編碼轉(zhuǎn)換操作技巧,具有一定參考借鑒價(jià)值,需要的朋友可以參考下
    2016-07-07
  • python利用小波分析進(jìn)行特征提取的實(shí)例

    python利用小波分析進(jìn)行特征提取的實(shí)例

    今天小編就為大家分享一篇python利用小波分析進(jìn)行特征提取的實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-01-01
  • python文件轉(zhuǎn)為exe文件的方法及用法詳解

    python文件轉(zhuǎn)為exe文件的方法及用法詳解

    py2exe是一個(gè)將python腳本轉(zhuǎn)換成windows上的可獨(dú)立執(zhí)行的可執(zhí)行程序(*.exe)的工具,這樣,你就可以不用裝python而在windows系統(tǒng)上運(yùn)行這個(gè)可執(zhí)行程序。本文重點(diǎn)給大家介紹python文件轉(zhuǎn)為exe文件的方法,感興趣的朋友跟隨小編一起看看吧
    2019-07-07
  • 基于Python實(shí)現(xiàn)文件的壓縮與解壓縮

    基于Python實(shí)現(xiàn)文件的壓縮與解壓縮

    在日常工作中,除了會(huì)涉及到使用Python處理文本文件,有時(shí)候還會(huì)涉及對壓縮文件的處理。本文為大家總結(jié)了利用Python可以實(shí)現(xiàn)的幾種文件壓縮與解壓縮實(shí)現(xiàn)代碼,需要的可以參考一下
    2022-03-03
  • Python flask項(xiàng)目入門教程

    Python flask項(xiàng)目入門教程

    flask 是一門使用 python 編寫的后端框架,這篇文章主要介紹了Python flask項(xiàng)目入門教程,本文通過示例代碼給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2023-08-08
  • opencv轉(zhuǎn)換顏色空間更改圖片背景

    opencv轉(zhuǎn)換顏色空間更改圖片背景

    這篇文章主要為大家詳細(xì)介紹了opencv轉(zhuǎn)換顏色空間更改圖片背景,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-08-08
  • tensorflow卷積神經(jīng)Inception?V3網(wǎng)絡(luò)結(jié)構(gòu)代碼解析

    tensorflow卷積神經(jīng)Inception?V3網(wǎng)絡(luò)結(jié)構(gòu)代碼解析

    這篇文章主要為大家介紹了卷積神經(jīng)Inception?V3網(wǎng)絡(luò)結(jié)構(gòu)代碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • python tornado上傳文件功能實(shí)現(xiàn)(前端和后端)

    python tornado上傳文件功能實(shí)現(xiàn)(前端和后端)

    Tornado 是一個(gè)功能強(qiáng)大的 Web 框架,除了基本的請求處理能力之外,還提供了一些高級(jí)功能,在 Tornado web 框架中,上傳圖片通常涉及創(chuàng)建一個(gè)表單,讓用戶選擇文件并上傳,本文介紹tornado上傳文件功能,感興趣的朋友一起看看吧
    2024-03-03
  • 詳解Python中的type()方法的使用

    詳解Python中的type()方法的使用

    這篇文章主要介紹了詳解Python中的type()方法的使用,是Python入門中的基礎(chǔ)知識(shí),需要的朋友可以參考下
    2015-05-05
  • Python爬蟲數(shù)據(jù)處理模塊的安裝使用教程

    Python爬蟲數(shù)據(jù)處理模塊的安裝使用教程

    這篇文章主要為大家介紹了Python爬蟲數(shù)據(jù)處理模塊的安裝使用教程,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-06-06

最新評(píng)論