python調用stitcher類自動實現多個圖像拼接融合功能

使用stitcher需要註意,圖像太大會報錯而且計算慢。

特點和適用范圍:圖像需有足夠重合相同特征區域。

優點:適應部分傾斜/尺度變換和畸變情形,拼接效果好,使用簡單,可以一次拼接多張圖片。

缺點:需要有足夠的相同特征區域進行匹配,速度較慢(和圖像大小有關)。

原圖(可下載)

代碼(兩張圖片拼接)

import sys
import cv2
 
if __name__ == "__main__":
    img1 = cv2.imread('C:/Users/Guaguan/Desktop/img/1.jpg')    # 圖片絕對路徑,
    img2 = cv2.imread('C:/Users/Guaguan/Desktop/img/2.jpg')
 
    # stitcher = cv2.createStitcher(False)    # 老的OpenCV版本,用這一個
    stitcher = cv2.Stitcher.create(cv2.Stitcher_PANORAMA)  # 我的是OpenCV4
 
    (status, pano) = stitcher.stitch((img1, img2))
    if status != cv2.Stitcher_OK:
        print("不能拼接圖片, error code = %d" % status)
        sys.exit(-1)
    print("拼接成功.")
    cv2.imshow('pano', pano)
    # cv2.imwrite("pano.jpg", pano)
    cv2.waitKey(0)

拼接結果

原圖

代碼(多個圖像自動拼接)

import os
import sys
import cv2
import win32ui
 
 
# ? python基於Stitcher圖像拼接
 
 
def imgstitcher(imgs):  # 傳入圖像數據 列表[] 實現圖像拼接
    stitcher = cv2.Stitcher.create(cv2.Stitcher_PANORAMA)
    _result, pano = stitcher.stitch(imgs)
 
    if _result != cv2.Stitcher_OK:
        print("不能拼接圖片, error code = %d" % _result)
        sys.exit(-1)
 
    output = 'result' + '.png'
    cv2.imwrite(output, pano)
    print("拼接成功. %s 已保存!" % output)
 
 
if __name__ == "__main__":
    # imgPath為圖片所在的文件夾相對路徑
    imgPath = 'C:/Users/Guaguan/Desktop/img'
    
    imgList = os.listdir(imgPath)
    imgs = []
    for imgName in imgList:
        pathImg = os.path.join(imgPath, imgName)
        img = cv2.imread(pathImg)
        if img is None:
            print("圖片不能讀取:" + imgName)
            sys.exit(-1)
        imgs.append(img)
 
    imgstitcher(imgs)    # 拼接
 
    cv2.waitKey(0)
    cv2.destroyAllWindows()

結果

到此這篇關於python調用stitcher類自動實現多個圖像拼接融合的文章就介紹到這瞭,更多相關python圖像拼接融合內容請搜索WalkonNet以前的文章或繼續瀏覽下面的相關文章希望大傢以後多多支持WalkonNet!