婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 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全景圖像拼接的實現示例的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美国产一区视频在线观看| 在线观看欧美精品| 日韩福利电影在线| 亚洲成人777| 日韩黄色小视频| 青青草91视频| 免费在线观看成人| 国产乱码精品一区二区三| 国产一区二区三区在线观看免费视频| 麻豆视频观看网址久久| 国产一区二区不卡老阿姨| 国产91精品精华液一区二区三区| 国产一区二区在线电影| 国产99久久久国产精品潘金| av成人免费在线观看| 91福利精品第一导航| 在线综合亚洲欧美在线视频| 精品国产一区二区亚洲人成毛片| 久久精品在这里| 国产精品福利电影一区二区三区四区| 中文字幕字幕中文在线中不卡视频| 综合激情成人伊人| 美女脱光内衣内裤视频久久影院| 国产麻豆精品视频| 色偷偷一区二区三区| 欧美精品亚洲二区| 国产无遮挡一区二区三区毛片日本| 国产精品国产三级国产aⅴ入口 | 久久精品国产色蜜蜜麻豆| 久草这里只有精品视频| av高清不卡在线| 91精品啪在线观看国产60岁| 日本一二三四高清不卡| 亚洲成a人v欧美综合天堂下载| 另类中文字幕网| 91影院在线观看| 日韩限制级电影在线观看| 国产精品国产三级国产aⅴ无密码| 午夜精品成人在线| 99久久国产综合色|国产精品| 欧美一区二区三区视频免费 | 国产美女久久久久| 色成年激情久久综合| 国产欧美一区二区精品性色| 午夜精品福利在线| 97精品久久久午夜一区二区三区| 精品少妇一区二区三区日产乱码 | 日韩中文字幕不卡| 高清av一区二区| 欧美一二三在线| 亚洲欧美在线aaa| 国产大陆精品国产| 精品入口麻豆88视频| 亚洲国产精品一区二区尤物区| 成人av在线影院| 国产日产欧美一区| 韩国女主播成人在线观看| 91精品视频网| 亚洲第一综合色| 在线免费观看不卡av| 亚洲天堂成人在线观看| 成人免费高清在线观看| 26uuu久久天堂性欧美| 美国一区二区三区在线播放| 69成人精品免费视频| 视频一区在线视频| 3d动漫精品啪啪| 日韩国产高清影视| 欧美一级理论性理论a| 视频在线观看一区| 日韩欧美国产综合在线一区二区三区| 无码av中文一区二区三区桃花岛| 欧美在线短视频| 一区二区久久久久| 一本色道久久综合亚洲精品按摩| 亚洲特级片在线| 在线一区二区三区四区| 亚洲一区中文在线| 正在播放亚洲一区| 狠狠狠色丁香婷婷综合激情| 国产日韩欧美精品电影三级在线| 国产成人av一区二区三区在线| 欧美激情一区在线| 色综合久久六月婷婷中文字幕| 日韩毛片高清在线播放| 欧美日韩一区在线| 日韩电影在线一区二区三区| 精品乱人伦小说| 成人夜色视频网站在线观看| 亚洲麻豆国产自偷在线| 欧美疯狂性受xxxxx喷水图片| 日本中文字幕一区| 久久久不卡影院| 91啪九色porn原创视频在线观看| 亚洲国产日韩av| 久久久精品免费观看| 91香蕉视频污| 久久av资源站| 18成人在线视频| 日韩欧美激情一区| 99精品一区二区| 麻豆成人久久精品二区三区红| 国产精品无遮挡| 欧美精品久久一区二区三区| 国产不卡视频一区| 亚洲一区二区三区四区中文字幕| 欧美电影免费观看高清完整版在线 | 国产欧美日韩三级| 精品视频999| 成人午夜在线视频| 琪琪一区二区三区| 亚洲日本欧美天堂| 久久你懂得1024| 4hu四虎永久在线影院成人| 风流少妇一区二区| 日韩精品乱码免费| 亚洲乱码国产乱码精品精小说 | 欧美精品xxxxbbbb| 成人免费视频国产在线观看| 蜜臀va亚洲va欧美va天堂| 自拍偷在线精品自拍偷无码专区| 精品国产一区二区三区四区四| 欧美视频日韩视频在线观看| 成人精品高清在线| 国产综合久久久久久久久久久久 | 国产精品原创巨作av| 青青国产91久久久久久| 一区二区三区小说| 日韩美女视频一区二区 | 欧美午夜视频网站| www.亚洲人| 国产69精品久久久久毛片| 久久99这里只有精品| 亚洲成人自拍一区| 国产一区视频导航| 天天综合网 天天综合色| 亚洲人一二三区| 国产精品天干天干在观线| 久久精品视频一区| 国产亚洲综合性久久久影院| 精品久久久久久久人人人人传媒| 91精品婷婷国产综合久久竹菊| 欧美美女喷水视频| 91精品婷婷国产综合久久性色| 在线日韩av片| 欧美日韩激情在线| 欧美午夜寂寞影院| 欧美日韩一级二级三级| 精品视频在线看| 欧美浪妇xxxx高跟鞋交| 欧美喷水一区二区| 91精品国产一区二区三区| 欧美一区二区三区系列电影| 18成人在线观看| 成人欧美一区二区三区小说| 国产精品污污网站在线观看| 亚洲欧美在线aaa| 亚洲一区二区三区影院| 午夜久久久影院| 久久国产尿小便嘘嘘| 国产a久久麻豆| 色婷婷激情综合| 欧美一区二区三区四区高清| 精品国产乱码久久久久久牛牛| 久久嫩草精品久久久久| 一区在线播放视频| 亚洲bt欧美bt精品777| 久久精品国产一区二区三区免费看| 国产在线不卡一区| 色综合夜色一区| 欧美一级久久久| 成人免费一区二区三区在线观看| 亚洲一区二区欧美日韩| 精品一区二区三区蜜桃| 99综合影院在线| 日韩一区二区电影在线| 欧美国产成人在线| 日韩av电影天堂| www.日本不卡| 91精品国产综合久久久久| 久久伊人中文字幕| 亚洲影院在线观看| 粗大黑人巨茎大战欧美成人| 欧美日韩国产首页在线观看| 国产肉丝袜一区二区| 丝袜美腿亚洲一区二区图片| 国产成人综合精品三级| 欧美绝品在线观看成人午夜影视| 中文字幕va一区二区三区| 午夜欧美电影在线观看| 岛国精品在线观看| 精品1区2区在线观看| 天堂影院一区二区| 91浏览器在线视频| 欧美国产国产综合| 国产一区二区在线观看免费 | 国产日产欧美一区二区视频| 亚洲高清在线精品| 91视频一区二区| 国产精品嫩草影院av蜜臀|