小言_互联网的博客

python调用stitcher类自动实现多个图像拼接融合

582人阅读  评论(0)

使用stitcher需要注意,图像太大会报错而且计算慢。

特点和适用范围:图像需有足够重合相同特征区域。

优点:适应部分倾斜/尺度变换和畸变情形,拼接效果好,使用简单,可以一次拼接多张图片。

缺点:需要有足够的相同特征区域进行匹配,速度较慢(和图像大小有关)。

原图(可下载)

代码(两张图片拼接)


  
  1. import sys
  2. import cv2
  3. if __name__ == "__main__":
  4. img1 = cv2.imread( 'C:/Users/Guaguan/Desktop/img/1.jpg') # 图片绝对路径,
  5. img2 = cv2.imread( 'C:/Users/Guaguan/Desktop/img/2.jpg')
  6. # stitcher = cv2.createStitcher(False) # 老的OpenCV版本,用这一个
  7. stitcher = cv2.Stitcher.create(cv2.Stitcher_PANORAMA) # 我的是OpenCV4
  8. (status, pano) = stitcher.stitch((img1, img2))
  9. if status != cv2.Stitcher_OK:
  10. print( "不能拼接图片, error code = %d" % status)
  11. sys.exit( -1)
  12. print( "拼接成功.")
  13. cv2.imshow( 'pano', pano)
  14. # cv2.imwrite("pano.jpg", pano)
  15. cv2.waitKey( 0)

拼接结果

原图

代码(多个图像自动拼接)


  
  1. import os
  2. import sys
  3. import cv2
  4. import win32ui
  5. # ? python基于Stitcher图像拼接
  6. def imgstitcher(imgs): # 传入图像数据 列表[] 实现图像拼接
  7. stitcher = cv2.Stitcher.create(cv2.Stitcher_PANORAMA)
  8. _result, pano = stitcher.stitch(imgs)
  9. if _result != cv2.Stitcher_OK:
  10. print( "不能拼接图片, error code = %d" % _result)
  11. sys.exit( -1)
  12. output = 'result' + '.png'
  13. cv2.imwrite(output, pano)
  14. print( "拼接成功. %s 已保存!" % output)
  15. if __name__ == "__main__":
  16. # imgPath为图片所在的文件夹相对路径
  17. imgPath = 'C:/Users/Guaguan/Desktop/img'
  18. imgList = os.listdir(imgPath)
  19. imgs = []
  20. for imgName in imgList:
  21. pathImg = os.path.join(imgPath, imgName)
  22. img = cv2.imread(pathImg)
  23. if img is None:
  24. print( "图片不能读取:" + imgName)
  25. sys.exit( -1)
  26. imgs.append(img)
  27. imgstitcher(imgs) # 拼接
  28. cv2.waitKey( 0)
  29. cv2.destroyAllWindows()

结果

 


转载:https://blog.csdn.net/qq_36623595/article/details/116018818
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场