欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品

主頁 > 知識庫 > OpenCV全景圖像拼接的實現示例

OpenCV全景圖像拼接的實現示例

熱門標簽:北瀚ai電銷機器人官網手機版 所得系統電梯怎樣主板設置外呼 朝陽手機外呼系統 市場上的電銷機器人 小蘇云呼電話機器人 佛山400電話辦理 北京電銷外呼系統加盟 地圖標注面積 儋州電話機器人

本文主要介紹了OpenCV全景圖像拼接的實現示例,分享給大家,具體如下:

left_01.jpg

right_01.jpg

Stitcher.py

import numpy as np
import cv2
 
class Stitcher:
 
    #拼接函數
    def stitch(self, images, ratio=0.75, reprojThresh=4.0,showMatches=False):
        #獲取輸入圖片
        (imageB, imageA) = images
        #檢測A、B圖片的SIFT關鍵特征點,并計算特征描述子
        (kpsA, featuresA) = self.detectAndDescribe(imageA)
        (kpsB, featuresB) = self.detectAndDescribe(imageB)
 
        # 匹配兩張圖片的所有特征點,返回匹配結果
        M = self.matchKeypoints(kpsA, kpsB, featuresA, featuresB, ratio, reprojThresh)
 
        # 如果返回結果為空,沒有匹配成功的特征點,退出算法
        if M is None:
            return None
 
        # 否則,提取匹配結果
        # H是3x3視角變換矩陣      
        (matches, H, status) = M
        # 將圖片A進行視角變換,result是變換后圖片
        result = cv2.warpPerspective(imageA, H, (imageA.shape[1] + imageB.shape[1], imageA.shape[0]))
        self.cv_show('result', result)
        # 將圖片B傳入result圖片最左端
        result[0:imageB.shape[0], 0:imageB.shape[1]] = imageB
        self.cv_show('result', result)
        # 檢測是否需要顯示圖片匹配
        if showMatches:
            # 生成匹配圖片
            vis = self.drawMatches(imageA, imageB, kpsA, kpsB, matches, status)
            # 返回結果
            return (result, vis)
 
        # 返回匹配結果
        return result
    def cv_show(self,name,img):
        cv2.imshow(name, img)
        cv2.waitKey(0)
        cv2.destroyAllWindows()
 
    def detectAndDescribe(self, image):
        # 將彩色圖片轉換成灰度圖
        gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
 
        # 建立SIFT生成器
        descriptor = cv2.xfeatures2d.SIFT_create()
        # 檢測SIFT特征點,并計算描述子
        (kps, features) = descriptor.detectAndCompute(image, None)
 
        # 將結果轉換成NumPy數組
        kps = np.float32([kp.pt for kp in kps])
 
        # 返回特征點集,及對應的描述特征
        return (kps, features)
 
    def matchKeypoints(self, kpsA, kpsB, featuresA, featuresB, ratio, reprojThresh):
        # 建立暴力匹配器
        matcher = cv2.BFMatcher()
  
        # 使用KNN檢測來自A、B圖的SIFT特征匹配對,K=2
        rawMatches = matcher.knnMatch(featuresA, featuresB, 2)
 
        matches = []
        for m in rawMatches:
            # 當最近距離跟次近距離的比值小于ratio值時,保留此匹配對
            if len(m) == 2 and m[0].distance  m[1].distance * ratio:
            # 存儲兩個點在featuresA, featuresB中的索引值
                matches.append((m[0].trainIdx, m[0].queryIdx))
 
        # 當篩選后的匹配對大于4時,計算視角變換矩陣
        if len(matches) > 4:
            # 獲取匹配對的點坐標
            ptsA = np.float32([kpsA[i] for (_, i) in matches])
            ptsB = np.float32([kpsB[i] for (i, _) in matches])
 
            # 計算視角變換矩陣
            (H, status) = cv2.findHomography(ptsA, ptsB, cv2.RANSAC, reprojThresh)
 
            # 返回結果
            return (matches, H, status)
 
        # 如果匹配對小于4時,返回None
        return None
 
    def drawMatches(self, imageA, imageB, kpsA, kpsB, matches, status):
        # 初始化可視化圖片,將A、B圖左右連接到一起
        (hA, wA) = imageA.shape[:2]
        (hB, wB) = imageB.shape[:2]
        vis = np.zeros((max(hA, hB), wA + wB, 3), dtype="uint8")
        vis[0:hA, 0:wA] = imageA
        vis[0:hB, wA:] = imageB
 
        # 聯合遍歷,畫出匹配對
        for ((trainIdx, queryIdx), s) in zip(matches, status):
            # 當點對匹配成功時,畫到可視化圖上
            if s == 1:
                # 畫出匹配對
                ptA = (int(kpsA[queryIdx][0]), int(kpsA[queryIdx][1]))
                ptB = (int(kpsB[trainIdx][0]) + wA, int(kpsB[trainIdx][1]))
                cv2.line(vis, ptA, ptB, (0, 255, 0), 1)
 
        # 返回可視化結果
        return vis

ImageStiching.py

from Stitcher import Stitcher
import cv2
 
# 讀取拼接圖片
imageA = cv2.imread("left_01.jpg")
imageB = cv2.imread("right_01.jpg")
 
# 把圖片拼接成全景圖
stitcher = Stitcher()
(result, vis) = stitcher.stitch([imageA, imageB], showMatches=True)
 
# 顯示所有圖片
cv2.imshow("Image A", imageA)
cv2.imshow("Image B", imageB)
cv2.imshow("Keypoint Matches", vis)
cv2.imshow("Result", result)
cv2.waitKey(0)
cv2.destroyAllWindows()

運行結果:

如遇以下錯誤:

cv2.error: OpenCV(3.4.3) C:\projects\opencv-python\opencv_contrib\modules\xfeatures2d\src\sift.cpp:1207: error: (-213:The function/feature is not implemented) This algorithm is patented and is excluded in this configuration; Set OPENCV_ENABLE_NONFREE CMake option and rebuild the library in function ‘cv::xfeatures2d::SIFT::create'

如果運行OpenCV程序提示算法版權問題可以通過安裝低版本的opencv-contrib-python解決:

pip install --user opencv-contrib-python==3.3.0.10

到此這篇關于OpenCV全景圖像拼接的實現示例的文章就介紹到這了,更多相關OpenCV 圖像拼接內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • python opencv進行圖像拼接
  • opencv2基于SURF特征提取實現兩張圖像拼接融合
  • python+OpenCV實現圖像拼接
  • python opencv 圖像拼接的實現方法
  • OpenCV實現多圖像拼接成一張大圖
  • opencv實現多張圖像拼接
  • Opencv使用Stitcher類圖像拼接生成全景圖像

標簽:云南 江蘇 寧夏 金融催收 酒泉 龍巖 定西 商丘

巨人網絡通訊聲明:本文標題《OpenCV全景圖像拼接的實現示例》,本文關鍵詞  OpenCV,全景,圖像,拼接,的,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《OpenCV全景圖像拼接的實現示例》相關的同類信息!
  • 本頁收集關于OpenCV全景圖像拼接的實現示例的相關信息資訊供網民參考!
  • 推薦文章
    欧美阿v视频在线大全_亚洲欧美中文日韩V在线观看_www性欧美日韩欧美91_亚洲欧美日韩久久精品
  • <rt id="w000q"><acronym id="w000q"></acronym></rt>
  • <abbr id="w000q"></abbr>
    <rt id="w000q"></rt>
    色琪琪一区二区三区亚洲区| 亚洲欧美一区二区三区久本道91| 婷婷综合五月天| 国产chinesehd精品露脸| 一本一本久久a久久精品综合麻豆| 国产精品网站在线播放| 福利91精品一区二区三区| 成人午夜在线播放| 麻豆精品免费视频| 另类小说一区二区三区| 国产一级二级在线观看| 色综合久久天天综合网| 欧美性受xxxx| 亚洲黄色小视频| 能看毛片的网站| 欧美日韩dvd在线观看| 亚洲五码中文字幕| 国产精品九九视频| 欧美成人vr18sexvr| 男女视频一区二区| 亚洲av成人无码久久精品 | 麻豆久久久久久久| 中文幕无线码中文字蜜桃| 精品国产乱码久久久久久老虎| 国内精品写真在线观看| 亚洲午夜久久久久久久国产| 国产日韩高清在线| 成人精品在线视频观看| 在线观看91视频| 亚洲电影一级黄| 97超碰在线免费观看| 久久久噜噜噜久久人人看| 国产精品一级片在线观看| 91九色丨porny丨极品女神| 亚洲人成伊人成综合网小说| 苍井空张开腿实干12次| 日韩一区二区精品在线观看| 激情六月婷婷久久| 538精品在线观看| 亚洲高清免费在线| 国产黄色大片免费看| 中文字幕一区二区在线播放| 自拍偷拍激情视频| 精品999久久久| 成人激情黄色小说| 欧美色中文字幕| 久久国产精品99久久久久久老狼 | 日韩电影在线观看一区| 在线观看日本中文字幕| 国产精品久久久久久久久免费樱桃 | 刘亦菲国产毛片bd| 亚洲男人的天堂在线aⅴ视频| 国产婷婷在线观看| 国产清纯白嫩初高生在线观看91| 91亚洲午夜精品久久久久久| 日韩一级免费观看| 国产99久久久久| 7777精品伊人久久久大香线蕉的 | 欧美伦理电影网| 久久99精品久久久久| 色域天天综合网| 日韩主播视频在线| 欧美激情精品久久久久久免费 | 好吊色视频在线观看| 日韩国产一二三区| 日本午夜在线观看| 天天射综合影视| 老湿机69福利| 蜜臀av一区二区| 在线视频综合导航| 国产最新精品免费| 777亚洲妇女| 成人免费毛片嘿嘿连载视频| 91精品国产91久久久久久最新毛片| 国产高清亚洲一区| 777奇米四色成人影色区| 国产成人综合视频| 91麻豆精品国产91久久久| 岛国一区二区在线观看| 日韩欧美精品三级| 古装做爰无遮挡三级聊斋艳谭| 久久嫩草精品久久久精品一| 久久久久亚洲AV成人网人人小说| 国产女人18毛片水真多成人如厕| 亚洲av成人片无码| 亚洲精品视频在线观看网站| 亚洲一区 欧美| 丝袜国产日韩另类美女| 在线欧美日韩国产| 国产99一区视频免费| 精品国产三级电影在线观看| 国产精品果冻传媒| 亚洲丝袜另类动漫二区| 蜜桃av免费在线观看| 日日夜夜一区二区| 欧美三片在线视频观看| 成人av午夜影院| 国产欧美日韩综合| 精品人妻无码一区二区三区换脸| 亚洲国产一区二区视频| 色噜噜狠狠成人中文综合| 国产裸体歌舞团一区二区| 日韩视频永久免费| 熟妇高潮一区二区| 亚洲主播在线播放| 色婷婷av一区二区三区大白胸| 亚洲欧洲日产国码二区| 成人一级片免费看| 麻豆91免费观看| 日韩欧美激情四射| 国产亚洲色婷婷久久99精品91| 亚洲综合男人的天堂| 色综合天天综合网天天狠天天| 国产福利一区在线| 永久看看免费大片| 亚洲日本乱码在线观看| 我要看黄色一级片| 国产黄人亚洲片| 国产视频911| 69xxx免费| 国产一区二区免费在线| 久久久久久97三级| 在线观看国产精品一区| 另类人妖一区二区av| 欧美成人精品福利| 亚洲av无码国产精品久久| 五月激情六月综合| 欧美一区二区三区在线观看| 完美搭档在线观看| 婷婷综合另类小说色区| 91精品婷婷国产综合久久竹菊| 日本天堂在线播放| 午夜av一区二区| 日韩精品一区二区三区中文不卡| 国产高清自拍视频| 麻豆一区二区在线| 久久精品亚洲乱码伦伦中文| 无码人中文字幕| 高清不卡一二三区| 色久综合一二码| 成人国产精品视频| 亚洲欧洲成人自拍| 看片网站在线观看| 99久久免费精品高清特色大片| 国产精品少妇自拍| 色婷婷av一区二区三区软件 | 久久国产波多野结衣| 成人精品国产一区二区4080| 国产精品女上位| 一本色道亚洲精品aⅴ| 日本亚洲一区二区三区| 亚洲一二三区在线观看| 91精品国产综合久久精品麻豆| 中出视频在线观看| 国内精品免费**视频| 国产欧美一区在线| 国产成人久久久久| 师生出轨h灌满了1v1| 日本欧美一区二区三区乱码| 精品国产免费久久| 亚洲女人久久久| 被黑人猛躁10次高潮视频| 日韩国产在线观看| 国产亚洲成av人在线观看导航| 国产1区2区3区4区| 97中文字幕在线观看| 毛片基地黄久久久久久天堂| 国产欧美综合在线| 欧美日韩一区二区三区在线看| 亚洲AV无码国产精品| 国产成人免费视频一区| 依依成人综合视频| 精品欧美久久久| 国产性xxxx| 中文字幕a在线观看| 国产一区二区女| 亚洲综合丁香婷婷六月香| 欧美成人精品福利| 日韩女优一区二区| 国产熟女高潮一区二区三区| 国产一区二区三区美女| 亚洲精品免费在线观看| 精品美女一区二区| 色综合天天综合网天天狠天天| 北岛玲一区二区| 大陆成人av片| 视频一区在线播放| 国产精品午夜免费| 91精品国产aⅴ一区二区| 91久久久久久久久久久久久久| 特种兵之深入敌后| 激情综合网av| 一区二区成人在线观看| 久久免费看少妇高潮| 欧美性猛片xxxx免费看久爱| 国产中年熟女高潮大集合| 91浏览器入口在线观看| 国产一区在线观看麻豆| 亚洲国产精品视频| 国产精品视频线看|