成人性生交大片免费看视频r_亚洲综合极品香蕉久久网_在线视频免费观看一区_亚洲精品亚洲人成人网在线播放_国产精品毛片av_久久久久国产精品www_亚洲国产一区二区三区在线播_日韩一区二区三区四区区区_亚洲精品国产无套在线观_国产免费www

主頁(yè) > 知識(shí)庫(kù) > OpenCV-Python 實(shí)現(xiàn)兩張圖片自動(dòng)拼接成全景圖

OpenCV-Python 實(shí)現(xiàn)兩張圖片自動(dòng)拼接成全景圖

熱門標(biāo)簽:聊城語(yǔ)音外呼系統(tǒng) ai電銷機(jī)器人的優(yōu)勢(shì) 打電話機(jī)器人營(yíng)銷 騰訊地圖標(biāo)注沒(méi)法顯示 孝感營(yíng)銷電話機(jī)器人效果怎么樣 南陽(yáng)打電話機(jī)器人 海外網(wǎng)吧地圖標(biāo)注注冊(cè) 商家地圖標(biāo)注海報(bào) 地圖標(biāo)注自己和別人標(biāo)注區(qū)別

背景介紹

圖片的全景拼接如今已不再稀奇,現(xiàn)在的智能攝像機(jī)和手機(jī)攝像頭基本都帶有圖片自動(dòng)全景拼接的功能,但是一般都會(huì)要求拍攝者保持設(shè)備的平穩(wěn)以及單方向的移動(dòng)取景以實(shí)現(xiàn)較好的拼接結(jié)果。這是因?yàn)槠唇拥膱D片之間必須要有相似的區(qū)域以保證拼接結(jié)果的準(zhǔn)確性和完整性。本文主要簡(jiǎn)單描述如何用 Python 和 OpenCV 庫(kù)實(shí)現(xiàn)兩張圖片的自動(dòng)拼合,首先簡(jiǎn)單介紹一下兩張圖片拼接的原理。

基本原理

要實(shí)現(xiàn)兩張圖片的簡(jiǎn)單拼接,其實(shí)只需找出兩張圖片中相似的點(diǎn) (至少四個(gè),因?yàn)?homography 矩陣的計(jì)算需要至少四個(gè)點(diǎn)), 計(jì)算一張圖片可以變換到另一張圖片的變換矩陣 (homography 單應(yīng)性矩陣),用這個(gè)矩陣把那張圖片變換后放到另一張圖片相應(yīng)的位置 ( 就是相當(dāng)于把兩張圖片中定好的四個(gè)相似的點(diǎn)給重合在一起)。如此,就可以實(shí)現(xiàn)簡(jiǎn)單的全景拼接。當(dāng)然,因?yàn)槠春现髨D片會(huì)重疊在一起,所以需要重新計(jì)算圖片重疊部分的像素值,否則結(jié)果會(huì)很難看。所以總結(jié)起來(lái)其實(shí)就兩個(gè)步驟:

1. 找兩張圖片中相似的點(diǎn),計(jì)算變換矩陣

2. 變換一張圖片放到另一張圖片合適的位置,并計(jì)算重疊區(qū)域新的像素值 (這里就是圖片融合所需要采取的策略)

具體實(shí)現(xiàn)

尋找相似點(diǎn)

當(dāng)然,我們可以手動(dòng)的尋找相似的點(diǎn),但是這樣比較麻煩。因?yàn)橄嗨泣c(diǎn)越多或者相似點(diǎn)對(duì)應(yīng)的位置越準(zhǔn)確,所得的結(jié)果就越好,但是人的肉眼所找的位置總是有誤差的,而且找出很多的點(diǎn)也不是一件容易的事。所以就有聰明的人設(shè)計(jì)了自動(dòng)尋找相似點(diǎn)的算法,這里我們就用了 SIFT 算法,而 OpenCV 也給我們提供 SIFT 算法的接口,所以我們就不需要自己費(fèi)力去實(shí)現(xiàn)了。如下是兩張測(cè)試圖片的原圖和找出相似點(diǎn)后的圖片。

其中紅色的點(diǎn)是 SIFT 算法找出的相似點(diǎn),而綠色的線表示的是在所有找出的相似的點(diǎn)中所篩選出的可信度更高的相似的點(diǎn)。因?yàn)樗惴ㄕ页龅南嗨泣c(diǎn)并不一定是百分百正確的。然后就可以根據(jù)這些篩選出的相似點(diǎn)計(jì)算變換矩陣,當(dāng)然 OpenCV 也提供了相應(yīng)的接口方便我們的計(jì)算,而具體的代碼實(shí)現(xiàn)也可以在 OpenCV 的 Python tutorial 中找到 [1]。

圖片拼接

計(jì)算出變換矩陣后,接下來(lái)就是第二步,用計(jì)算出的變換矩陣對(duì)其中一張圖做變換,然后把變換的圖片與另一張圖片重疊在一起,并重新計(jì)算重疊區(qū)域新的像素值。對(duì)于計(jì)算重疊區(qū)域的像素值,其實(shí)可以有多種方法去實(shí)現(xiàn)一個(gè)好的融合效果,這里就用最簡(jiǎn)單粗暴的但效果也不錯(cuò)的方式。直白來(lái)說(shuō)就是實(shí)現(xiàn)一個(gè)圖像的線性漸變,對(duì)于重疊的區(qū)域,靠近左邊的部分,讓左邊圖像內(nèi)容顯示的多一些,靠近右邊的部分,讓右邊圖像的內(nèi)容顯示的多一些。用公式表示就是,假設(shè) alpha 表示像素點(diǎn)橫坐標(biāo)到左右重疊區(qū)域邊界橫坐標(biāo)的距離,新的像素值就為 newpixel = 左圖像素值 × (1 - alpha) + 右圖像素值 × alpha 。這樣就可以實(shí)現(xiàn)一個(gè)簡(jiǎn)單的融合效果,如果想實(shí)現(xiàn)更復(fù)雜或更好的效果,可以去搜索和嘗試一下 multi-band 融合,這里就不過(guò)多贅述了。最后附上實(shí)現(xiàn)的結(jié)果和代碼,可供參考。

Python 代碼如下:

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

if __name__ == '__main__':
    top, bot, left, right = 100, 100, 0, 500
    img1 = cv.imread('test1.jpg')
    img2 = cv.imread('test2.jpg')
    srcImg = cv.copyMakeBorder(img1, top, bot, left, right, cv.BORDER_CONSTANT, value=(0, 0, 0))
    testImg = cv.copyMakeBorder(img2, top, bot, left, right, cv.BORDER_CONSTANT, value=(0, 0, 0))
    img1gray = cv.cvtColor(srcImg, cv.COLOR_BGR2GRAY)
    img2gray = cv.cvtColor(testImg, cv.COLOR_BGR2GRAY)
    sift = cv.xfeatures2d_SIFT().create()
    # find the keypoints and descriptors with SIFT
    kp1, des1 = sift.detectAndCompute(img1gray, None)
    kp2, des2 = sift.detectAndCompute(img2gray, None)
    # FLANN parameters
    FLANN_INDEX_KDTREE = 1
    index_params = dict(algorithm=FLANN_INDEX_KDTREE, trees=5)
    search_params = dict(checks=50)
    flann = cv.FlannBasedMatcher(index_params, search_params)
    matches = flann.knnMatch(des1, des2, k=2)

    # Need to draw only good matches, so create a mask
    matchesMask = [[0, 0] for i in range(len(matches))]

    good = []
    pts1 = []
    pts2 = []
    # ratio test as per Lowe's paper
    for i, (m, n) in enumerate(matches):
        if m.distance  0.7*n.distance:
            good.append(m)
            pts2.append(kp2[m.trainIdx].pt)
            pts1.append(kp1[m.queryIdx].pt)
            matchesMask[i] = [1, 0]

    draw_params = dict(matchColor=(0, 255, 0),
                       singlePointColor=(255, 0, 0),
                       matchesMask=matchesMask,
                       flags=0)
    img3 = cv.drawMatchesKnn(img1gray, kp1, img2gray, kp2, matches, None, **draw_params)
    plt.imshow(img3, ), plt.show()

    rows, cols = srcImg.shape[:2]
    MIN_MATCH_COUNT = 10
    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 = cv.findHomography(src_pts, dst_pts, cv.RANSAC, 5.0)
        warpImg = cv.warpPerspective(testImg, np.array(M), (testImg.shape[1], testImg.shape[0]), flags=cv.WARP_INVERSE_MAP)

        for col in range(0, cols):
            if srcImg[:, col].any() and warpImg[:, col].any():
                left = col
                break
        for col in range(cols-1, 0, -1):
            if srcImg[:, col].any() and warpImg[:, col].any():
                right = col
                break

        res = np.zeros([rows, cols, 3], np.uint8)
        for row in range(0, rows):
            for col in range(0, cols):
                if not srcImg[row, col].any():
                    res[row, col] = warpImg[row, col]
                elif not warpImg[row, col].any():
                    res[row, col] = srcImg[row, col]
                else:
                    srcImgLen = float(abs(col - left))
                    testImgLen = float(abs(col - right))
                    alpha = srcImgLen / (srcImgLen + testImgLen)
                    res[row, col] = np.clip(srcImg[row, col] * (1-alpha) + warpImg[row, col] * alpha, 0, 255)

        # opencv is bgr, matplotlib is rgb
        res = cv.cvtColor(res, cv.COLOR_BGR2RGB)
        # show the result
        plt.figure()
        plt.imshow(res)
        plt.show()
    else:
        print("Not enough matches are found - {}/{}".format(len(good), MIN_MATCH_COUNT))
        matchesMask = None

Reference

[1] OpenCV tutorial: https://docs.opencv.org/3.4.1/d1/de0/tutorial_py_feature_homography.html

到此這篇關(guān)于OpenCV-Python 實(shí)現(xiàn)兩張圖片自動(dòng)拼接成全景圖的文章就介紹到這了,更多相關(guān)OpenCV 圖片自動(dòng)拼接成全景圖內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

您可能感興趣的文章:
  • OpenCV全景圖像拼接的實(shí)現(xiàn)示例
  • python opencv進(jìn)行圖像拼接
  • opencv2基于SURF特征提取實(shí)現(xiàn)兩張圖像拼接融合
  • python+OpenCV實(shí)現(xiàn)圖像拼接
  • Python+OpenCV實(shí)現(xiàn)圖像的全景拼接
  • python opencv 圖像拼接的實(shí)現(xiàn)方法
  • OpenCV實(shí)現(xiàn)多圖像拼接成一張大圖
  • opencv實(shí)現(xiàn)多張圖像拼接

標(biāo)簽:牡丹江 南寧 六盤水 聊城 揚(yáng)州 迪慶 楊凌 撫州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《OpenCV-Python 實(shí)現(xiàn)兩張圖片自動(dòng)拼接成全景圖》,本文關(guān)鍵詞  OpenCV-Python,實(shí)現(xiàn),兩張,圖片,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《OpenCV-Python 實(shí)現(xiàn)兩張圖片自動(dòng)拼接成全景圖》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于OpenCV-Python 實(shí)現(xiàn)兩張圖片自動(dòng)拼接成全景圖的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    久久野战av| 狠狠色噜噜狠狠狠8888米奇| 国产精品后入内射日本在线观看| 蜜臀久久99精品久久一区二区| 成人c视频免费高清在线观看| 亚洲图片中文字幕| 成人免费在线视频| 精品一区二区三区久久久| 国产男女猛烈无遮挡a片漫画| 秋霞伦理一区| 亚瑟国产精品| 日韩精品资源二区在线| 国产成人午夜精品影院观看视频| 美女在线一区| 啪一啪鲁一鲁2019在线视频| 国产精品一区专区| 好看的日韩精品| 黄色小视频在线免费看| 亚洲精品午夜久久久久久久| 久久久久久久久网站| 中文字幕乱码一区二区三区| 无码国产精品久久一区免费| 中文字幕一区二区三区不卡在线| 欧美专区在线| 神马久久久久久久久久| 国产精品日韩一区二区免费视频| 精品91久久久久| 7777kkkk成人观看| 国产精品1024久久| 欧美日韩精品三区| 欧美极品videos大乳护士| 色中色一区二区| av成人免费在线观看| 国产精品久久综合青草亚洲AV| 青青草久久爱| 免费一级淫片aaa片毛片a级| 亚洲一级特黄毛片| 老色鬼精品视频在线观看播放| 国产精品456露脸| jizz在线播放| 国内精品久久久久国产盗摄免费观看完整版| 同性视频网站免费男| 国产精品二区一区二区aⅴ污介绍| 国产手机精品视频| 成年人黄色在线观看| 动漫一区二区在线| 日本一区二区欧美| 国产av无码专区亚洲精品| 韩国精品主播一区二区在线观看| 日本高清一区二区视频| 国产激情av在线| 亚欧精品一区| 北条麻妃国产九九九精品小说| 亚洲色图清纯唯美| 色综合久久中文| 国产在线播精品第三| 韩日三级av| 欧美日韩国产123| 亚洲片在线观看| 欧美成人午夜剧场免费观看| 一区二区高清免费观看影视大全| 午夜在线视频观看日韩17c| 欧美区二区三区| 91精品综合久久久久久| 波多野结衣亚洲| 自拍视频在线看| 尤物99国产成人精品视频| 欧美另类bbbxxxxx另类| 美女诱惑一区二区| www.91视频| 欧美日韩国产一级二级| 伊人国产精品| 久久婷婷五月综合色国产香蕉| 天堂av在线网站| 国产精品9999久久久久仙踪林| 四虎国产精品永久| 日本高清不卡中文字幕| 欧美久久高跟鞋激| 性欧美极品另类| 在线欧美福利| 51xx午夜影福利| 国产盗摄在线观看| www.黄色小说.com| 永久免费在线观看视频| 成人免费高清| 亚洲成av人片在线观看无| 国产午夜精品一区二区三区四区| 国产综合网站| 182午夜在线观看| 日韩高清在线一区| 亚洲视频重口味| 欧美日韩高清丝袜| 中文字幕乱妇无码av在线| 中文字幕免费国产精品| 日韩精品欧美激情一区二区| av动漫免费观看| 国产精品国产精品国产专区不卡| 国产日韩精品一区二区三区在线| 水蜜桃精品av一区二区| 精品国产一区二区三区久久久蜜臀| 中文字幕av一区二区三区四区| 欧美黄色一级片视频| 日本不卡高清视频| 夜夜未满十八勿进的爽爽影视| 国产精品中文字幕在线观看| 亚洲欧洲精品成人久久奇米网| 欧美日韩免费做爰视频| 视频在线观看免费高清| 国产超碰人人爽人人做人人爱| 免费看污久久久| 成人午夜电影在线观看| 日本福利专区在线观看| 中文字幕色一区二区| 日本一区二区不卡在线| h视频在线观看网站| 毛片网站在线观看| 制服丝袜av成人在线看| 91久久夜色精品国产九色| 亚洲国产一区二区在线播放| 欧美精选视频在线观看| 99精品视频免费观看| 上原亚衣加勒比在线播放| 日韩精品国产精品| 欧美一区二区成人6969| 精品无人区乱码1区2区3区在线| av一区二区三区| 午夜在线观看av| 久久超级碰视频| 欧美高潮视频| 欧美人与动牲交xxxxbbbb| 黄网站视频在线观看| 91视视频在线观看入口直接观看www| www.亚洲高清| 99久久精品国产精品久久| 久久精品免费| 欧美日韩看片| 在线观看18视频网站| 国产福利在线观看视频| 99热精品一区二区| 亚洲国产经典视频| 奇米成人av国产一区二区三区| 日本三级很黄试看120秒| 小小的日本在线观看免费色网| 日韩在线观看高清| 狠狠操在线视频| 97人妻人人揉人人躁人人| 99视频免费看| 日本精品不卡| 精品黑人一区二区三区国语馆| 97成人精品视频在线观看| 亚洲欧美日韩综合网| 很污很黄的网站| 国产精品成人播放| 九色视频在线观看免费播放| 国产日韩欧美一区二区| 成人污视频在线观看| 亚洲美女区一区| 久久艳片www.17c.com| 99久久婷婷| 中文字幕欧美日韩一区二区| 天天操天天干天天插| 公肉吊粗大爽色翁浪妇视频| 日韩日韩日韩日韩日韩| 久久99精品久久久久婷婷| 亚洲日本va中文字幕| 国产成人精品a视频一区| 日本黄网站色大片免费观看| 中文字幕精品—区二区四季| 国产欧美日产一区| 毛片网站免费观看| 欧美日韩在线视频首页| 六月丁香在线视频| 99精品人妻无码专区在线视频区| 国产一区二区三区视频在线播放| 1pon在线| 99久久久国产精品免费调教网站| 国产女人aaa级久久久级| 中国黄色片一级| 成人精品动漫一区二区三区| 狠狠躁狠狠躁视频专区| 中文字幕日韩高清| 国产精品视频1区| 国产高清在线精品一区二区三区| av中文字幕免费在线观看| 亚洲中文字幕无码一区| 国色天香久久精品国产一区| 亚洲专区在线播放| 亚洲综合自拍一区| 97人人模人人爽人人少妇| 瑟瑟视频在线| 国产美女主播在线观看| 亚洲欧美自拍视频| 精品国产综合区久久久久久| jizz欧美激情18| 一级欧美一级日韩| 欧美主播一区二区三区美女| 91在线视频成人| www.夜夜操| 日本伦理一区二区三区| 免费黄色网页在线观看| 午夜精品aaa| 国产制服丝袜在线| 日韩免费视频一区二区视频在线观看| 北条麻妃亚洲一区| 久久精品观看| 精品国产成人| 再深点灬舒服灬太大了添少妇视频| 91精品一区二区| 潘金莲一级淫片aaaaaaa| 亚洲一区二区91| 视频一区二区三区在线| 亚洲 另类 春色 国产| 久久久久久夜精品精品免费| 欧美大奶子在线| 国产视频三区四区| 日本一本在线观看| 欧美精品色婷婷五月综合| 亚洲成人免费观看| 风间由美一区二区三区在线观看| 亚洲国产aⅴ精品一区二区三区| 在线视频1区| 五月婷在线视频| 亚洲不卡1卡2卡三卡2021麻豆| 黑森林精品导航| 1区2区3区精品视频| wwwwxxxx日韩| 李宗瑞系列合集久久| 丰满人妻老熟妇伦人精品| 国内不卡的二区三区中文字幕| yy6080午夜| 一个色妞综合视频在线观看| 1313精品午夜理伦电影| 日韩福利在线观看| 视频一区二区不卡| 99热这里只有精品在线| 久久精品毛片| 久久久高清一区二区三区| 国产一区二区三区不卡免费观看| 99久久免费国| 国产99久久久国产精品潘金| 最近中文字幕一区二区| 熟女高潮一区二区三区| 婷婷五月在线视频| 国产成人av电影在线播放| 波多野结衣绝顶大高潮| 最新理论片影院| 黑人久久a级毛片免费观看| 国产高清一区二区三区视频| 欧美一区二区三区在线观看视频| 久久不见久久见免费视频7| 久久精品女人天堂av免费观看| 性欧美办公室18xxxxhd| 日日操免费视频| 欧美日韩一区二区国产| 色多多视频在线播放| 欧美91福利在线观看| 亚洲男人电影天堂| 国产精品一区二区三区av| 最近日本中文字幕| 五月婷婷久久综合| 日韩成人一区二区三区| 国产精品久久久久久久久久久久久久| 日韩精品二区| 久久一夜天堂av一区二区三区| 91av国产精品| 青青草免费观看免费视频在线| 丰满人妻中伦妇伦精品app| 国产一区二区日韩精品| 亚洲国产一区二区三区在线| av资源站久久亚洲| 你懂的国产在线| 亚洲综合激情网| 巨骚激情综合| 日韩激情视频在线| 中文字幕2018| 精品中文av资源站在线观看| 国产精品国产国产aⅴ| 国产大片在线观看| 色综合久久网女同蕾丝边| 国产1区2区3区4区| 欧美一区二区精品在线| 亚洲精品一区二区三区婷婷月| 新呦u视频一区二区| 青草青草久热精品视频在线网站| 九九99玖玖| 亚洲精品福利网站| 9l视频自拍蝌蚪9l视频| 成人av动漫在线| 又爽又大又黄a级毛片在线视频| 欧美日韩精品免费在线观看视频| 亚洲视频导航| 亚洲免费精品| 免费中文字幕日韩| 欧美性极品xxxx娇小| 亚洲国产伊人| av网站在线播放| 天堂资源在线中文| 日韩av三级在线观看| 在线播放国产一区中文字幕剧情欧美| 公肉吊粗大爽色翁浪妇视频| 久久午夜精品视频| 超碰在线caoporen| 97人人澡人人爽| 国产手机视频在线| 久久影院理伦片| av中文字幕在线播放| 日本激情视频在线观看| 国产精品久久久久久久久粉嫩av| 欧美中文字幕在线| 国产永久免费高清在线观看视频| 欧美一卡二卡三卡| 国内精品久久99人妻无码| 亚洲精品女人| a级大胆欧美人体大胆666| 天堂资源在线播放| 日韩最新中文字幕电影免费看| 最好看的日本字幕mv视频大全| 成年人午夜免费视频| 免费精品在线视频| xxxxxx欧美| 国产日产欧美一区二区三区| 国产亚洲欧美日韩精品一区二区三区| 国产亲伦免费视频播放| 日韩一二三区| 欧美日韩理论片| 久久久久女教师免费一区| 亚洲欧美另类在线视频| 国产精品69一区二区三区|