欧美阿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>
    调教+趴+乳夹+国产+精品| 日本黄色www| 无码少妇精品一区二区免费动态| 欧美精品一二三区| 亚洲自拍偷拍九九九| 91麻豆免费看| 欧美午夜精品久久久久久超碰| 亚洲三级小视频| av在线这里只有精品| 一区视频免费观看| 中文字幕人成不卡一区| 成人毛片视频在线观看| 中文字幕在线有码| 亚洲人成影院在线观看| 91免费国产在线观看| 欧美性色综合网| 亚洲国产精品久久久男人的天堂| av在线天堂网| 欧美一区二区三区人| 日韩1区2区日韩1区2区| 久久只有这里有精品| xxxx黄色片| 欧美一区二区三区性视频| 首页国产丝袜综合| 亚洲v国产v欧美v久久久久久| 久久综合国产精品| 国产成人超碰人人澡人人澡| 中文字幕在线2021| 樱桃视频在线观看一区| 无码任你躁久久久久久老妇| 日韩欧美国产系列| 国产一区二区三区在线观看免费 | 亚洲欧美另类在线| 91美女在线视频| 69久久99精品久久久久婷婷| 麻豆精品一区二区三区| 91香蕉视频网| 亚洲美女视频在线| 秘密基地免费观看完整版中文 | 国产成人在线色| 日本乱人伦aⅴ精品| 亚洲成av人片一区二区三区| aa片在线观看视频在线播放| 久久精品人人做人人爽人人| caoporn国产一区二区| 51精品视频一区二区三区| 九九热在线视频观看这里只有精品| 美国一级片在线观看| 99riav一区二区三区| 国产精品成人无码专区| 色94色欧美sute亚洲线路一久 | 亚洲国产精品成人综合| 国产丶欧美丶日本不卡视频| 在线看日本不卡| 欧美aaaaaa午夜精品| 亚洲人与黑人屁股眼交| 亚洲最大的成人av| 国精产品一区二区三区| 综合电影一区二区三区| 三级男人添奶爽爽爽视频| 国产日韩欧美激情| 国产精品91av| 国产欧美综合在线观看第十页 | 中文字幕欧美日韩一区| 韩国三级丰满少妇高潮| 久久综合久久鬼色中文字| www.亚洲国产| 精品剧情v国产在线观看在线| 成年人午夜久久久| 日韩三级视频在线看| 成人av资源在线观看| 日韩一区二区视频| 成人手机电影网| 日韩精品一区二区三区四区 | 久久免费视频色| 中文字幕国产精品一区二区| 97精品久久久午夜一区二区三区| 精品日韩一区二区| 少妇丰满尤物大尺度写真| 久久美女艺术照精彩视频福利播放| 91在线免费播放| 久久婷婷久久一区二区三区| 欧美xxxx黑人| 中文字幕免费在线观看视频一区| 水蜜桃av无码| 亚洲精品免费视频| 国产3级在线观看| 青青草视频一区| 欧美色窝79yyyycom| 国产精品亚洲第一| 欧美mv日韩mv国产| 影音先锋资源av| 综合中文字幕亚洲| 老司机福利在线观看| 石原莉奈在线亚洲二区| 欧美体内she精视频| 成人永久免费视频| 久久亚洲免费视频| 国产伦精品一区二区三区妓女| 亚洲精品综合在线| 国产真实乱在线更新| 久久国产精品露脸对白| 56国语精品自产拍在线观看| 97久久超碰国产精品| 国产精品国产三级国产普通话三级| 法国空姐电影在线观看| 日韩福利电影在线| 欧美日韩国产综合一区二区| 不卡电影一区二区三区| 亚洲国产成人在线| 日韩av片在线免费观看| 九九国产精品视频| 精品国产91乱码一区二区三区 | 日韩一区二区在线观看视频| 亚洲黄色小说在线观看| 亚洲精品中文在线观看| 一区二区在线观看免费视频| 风流少妇一区二区| 日本一区二区在线不卡| 免费看裸体网站| 男人的j进女人的j一区| 欧美精品在线观看播放| 中文字幕1区2区| 亚洲国产成人高清精品| 欧美日韩国产美女| 亚洲一区二区三区四区av| 午夜精品一区二区三区免费视频| 欧美日韩一二三| 免费不卡的av| 丝袜诱惑制服诱惑色一区在线观看| 欧美精品久久99久久在免费线 | 欧洲视频一区二区| 99久久精品国产精品久久| 亚洲欧美国产77777| 在线日韩av片| 亚洲少妇一区二区三区| 亚洲成人av中文| 欧美一区三区四区| 免费毛片视频网站| 国产在线一区二区| 欧美韩国日本综合| www.av成人| 91原创在线视频| 亚洲午夜久久久久久久久久久| 欧美人成免费网站| 精品国产aⅴ一区二区三区东京热| 亚洲电影一区二区三区| 91网上在线视频| 亚洲午夜精品在线| 69堂精品视频| 少妇无套高潮一二三区| 国产91清纯白嫩初高中在线观看| 亚洲欧洲性图库| 欧美日韩视频不卡| 右手影院亚洲欧美| 九九精品一区二区| 国产精品久久一卡二卡| 日本高清无吗v一区| 偷偷色噜狠狠狠狠的777米奇| 欧美aaaaa成人免费观看视频| 国产午夜亚洲精品羞羞网站| 全网免费在线播放视频入口| 国产伦精品一区二区三区妓女下载 | 日韩中文欧美在线| 国产欧美一区二区在线观看| 色就色 综合激情| 免费中文字幕av| 国产成人av一区二区三区在线| 樱花影视一区二区| 日韩精品资源二区在线| 成人一级黄色大片| 性活交片大全免费看| 国产综合久久久久影院| 亚洲日本丝袜连裤袜办公室| 日韩一级大片在线观看| 欧美激情精品久久久久久免费| 91蝌蚪porny| 九九久久精品视频| 一区二区欧美国产| 97久久精品人人做人人爽50路 | 一二三四社区欧美黄| 91麻豆精品国产91久久久| 久久午夜精品视频| 91视频在线观看免费| 久久不见久久见免费视频7| 日韩美女精品在线| 欧美成人国产一区二区| 91福利精品第一导航| 亚洲图片另类小说| 欧美老女人bb| 国产盗摄一区二区三区| 午夜欧美一区二区三区在线播放| 国产欧美日韩亚州综合| 7777精品伊人久久久大香线蕉经典版下载 | 欧美国产日韩在线观看| 欧美精品三级日韩久久| 蜜桃av免费在线观看| 亚洲 欧美 日韩在线| av毛片久久久久**hd| 久久精品国产精品青草|