婷婷综合国产,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
    欧美一区在线视频| 久久一区二区视频| 国产情人综合久久777777| 亚洲一区二区综合| 91久久精品日日躁夜夜躁欧美| 欧美aaaaa成人免费观看视频| 538在线一区二区精品国产| 亚洲免费av在线| 国产资源精品在线观看| 亚洲国产日韩一区二区| 欧美色国产精品| 婷婷开心久久网| 中文字幕精品一区二区精品绿巨人| 狠狠色丁香婷综合久久| 久久九九全国免费| 麻豆国产精品视频| 精品国产一区二区三区不卡| 日本一区二区电影| 国产91精品一区二区麻豆网站| 日韩精品资源二区在线| 精品制服美女丁香| 精品精品欲导航| 日韩中文字幕区一区有砖一区 | 毛片av一区二区| 精品捆绑美女sm三区| 亚洲午夜三级在线| 综合欧美一区二区三区| 欧美日韩国产一级片| 亚洲精品一二三| 亚洲欧美中日韩| 欧美丝袜第三区| 亚洲国产精品精华液2区45| 精品美女在线观看| 亚洲一区二区av在线| 高清shemale亚洲人妖| 国产精品成人免费在线| 亚洲va韩国va欧美va精品| 日韩欧美在线1卡| 国产精品资源在线| 国产精一品亚洲二区在线视频| 中文字幕一区二区三区不卡 | 日韩女优制服丝袜电影| 蜜桃一区二区三区在线观看| 亚洲高清不卡在线观看| 久久久综合精品| 色综合久久久久综合体| 六月丁香婷婷久久| 欧美怡红院视频| 久久精品久久99精品久久| 国产精品三级电影| 欧美喷水一区二区| 国产91在线看| 精品欧美一区二区三区精品久久| 日韩欧美一级在线播放| 色综合久久天天综合网| 麻豆精品视频在线| 国产白丝精品91爽爽久久| 日本一区免费视频| 欧美一区二区在线视频| 日韩写真欧美这视频| 亚洲已满18点击进入久久| 精品国产一区二区在线观看| 在线一区二区三区做爰视频网站| 青草国产精品久久久久久| 日韩欧美一区二区在线视频| 国产精品一二三在| 日韩视频一区二区三区在线播放| 精品粉嫩aⅴ一区二区三区四区| 99久久精品国产麻豆演员表| 美女视频一区二区| 国产精品77777竹菊影视小说| 午夜精品免费在线| 综合色中文字幕| 日韩精品三区四区| 日本一区二区三区视频视频| 日韩欧美国产综合在线一区二区三区| 成人免费视频app| 成人激情免费网站| 中文字幕在线不卡| 久久久91精品国产一区二区精品 | 国产成人一级电影| 日本在线播放一区二区三区| 中文字幕一区二区三区精华液 | 久久99久国产精品黄毛片色诱| 亚洲人精品一区| 色婷婷av一区二区| 精品国产网站在线观看| 色国产综合视频| 亚洲自拍偷拍网站| 精品一区二区三区免费视频| 婷婷中文字幕综合| 亚洲国产欧美一区二区三区丁香婷| 久久av资源网| 麻豆91在线观看| 亚洲成av人在线观看| 国产一区在线看| 久久久影视传媒| 欧美一区二区人人喊爽| 亚洲三级理论片| 国产精品成人一区二区艾草 | 欧美日韩免费观看一区三区| 91在线免费视频观看| 欧美mv日韩mv| 日韩视频免费直播| 日韩小视频在线观看专区| 成人免费一区二区三区视频| 国产精品久久一卡二卡| 国产日韩欧美电影| 国产精品一区二区免费不卡| 欧美精品18+| 欧美日韩在线三区| 麻豆中文一区二区| 久久国产生活片100| 麻豆国产精品一区二区三区| 热久久国产精品| 乱一区二区av| 国产精品久久久久桃色tv| 国产精品99久久久久久似苏梦涵 | 亚洲图片激情小说| 亚洲视频一区二区在线观看| 日韩二区三区在线观看| 亚洲日本成人在线观看| 亚洲最新视频在线观看| 偷拍一区二区三区| 美日韩一区二区| 国产精品无码永久免费888| 18成人在线观看| 亚洲成av人片在线观看无码| 国产精品嫩草99a| 亚洲欧洲日本在线| 老司机免费视频一区二区三区| 久久影院午夜论| 日韩西西人体444www| 亚洲高清视频的网址| 日韩国产精品久久| 久久综合色鬼综合色| 亚洲综合激情另类小说区| 国产成人精品免费| 亚洲国产婷婷综合在线精品| 国产伦理精品不卡| 亚洲一区二区三区爽爽爽爽爽 | 成人av资源站| 精品国产一区二区亚洲人成毛片| 亚洲国产精品激情在线观看| 日韩美女视频一区二区 | 欧美日本精品一区二区三区| 亚洲国产精品成人综合色在线婷婷| 久久日韩精品一区二区五区| 日本一二三四高清不卡| 中文字幕一区二区三区在线观看| 亚洲视频一二区| 国产高清一区日本| 69av一区二区三区| 精品乱码亚洲一区二区不卡| 蜜臀av一区二区三区| 91老师片黄在线观看| 福利电影一区二区三区| 久久久久久电影| 麻豆国产91在线播放| 亚洲一区中文日韩| 久久久综合视频| 亚洲综合一区二区精品导航| www.av亚洲| 欧美精品久久天天躁| 国产精品女同一区二区三区| 精品日韩一区二区三区免费视频| 精品国产制服丝袜高跟| 精品国产亚洲在线| 久久97超碰色| 精品美女在线播放| 亚洲国产视频一区| 免费精品视频最新在线| 欧美日韩精品一区二区三区蜜桃| 一区二区免费在线| 精品视频1区2区3区| 欧美一区二区三区公司| 亚洲色图视频网| www.66久久| 国产精品福利在线播放| 国产乱码精品一区二区三| 欧美日韩成人综合| 日韩久久一区二区| 韩国欧美国产一区| 一区二区三区国产| 成+人+亚洲+综合天堂| 亚洲第四色夜色| 91精品国产入口| 久久激情五月婷婷| 1024成人网色www| 欧洲亚洲国产日韩| 欧美日韩高清影院| 麻豆专区一区二区三区四区五区| 91麻豆精品一区二区三区| 国产91丝袜在线观看| 亚洲欧美国产三级| av成人老司机| 午夜久久电影网| 国产精品一二三四| 91网址在线看| 视频在线观看91|