python+OpenCV实现图像拼接


Posted in Python onMarch 05, 2020

本文实例为大家分享了利用python和OpenCV实现图像拼接,供大家参考,具体内容如下

python+OpenCV实现image stitching

在最新的OpenCV官方文档中可以找到C++版本的Stitcher类的说明, 但是python版本的还没有及时更新, 本篇对python版本的实现做一个简单的介绍.

由于官方文档中还没有python版本的Stitcher类的说明, 因此只能自己去GitHub源码上找, 以下是stitching的样例:

from __future__ import print_function
import cv2 as cv
import numpy as np
import argparse
import sys

modes = (cv.Stitcher_PANORAMA, cv.Stitcher_SCANS)

parser = argparse.ArgumentParser(description='Stitching sample.')
parser.add_argument('--mode',
 type = int, choices = modes, default = cv.Stitcher_PANORAMA,
 help = 'Determines configuration of stitcher. The default is `PANORAMA` (%d), '
   'mode suitable for creating photo panoramas. Option `SCANS` (%d) is suitable '
   'for stitching materials under affine transformation, such as scans.' % modes)
parser.add_argument('--output', default = 'result.jpg',
 help = 'Resulting image. The default is `result.jpg`.')
parser.add_argument('img', nargs='+', help = 'input images')
args = parser.parse_args()

# read input images
imgs = []
for img_name in args.img:
 img = cv.imread(img_name)
 if img is None:
  print("can't read image " + img_name)
  sys.exit(-1)
 imgs.append(img)

stitcher = cv.Stitcher.create(args.mode)
status, pano = stitcher.stitch(imgs)

if status != cv.Stitcher_OK:
 print("Can't stitch images, error code = %d" % status)
 sys.exit(-1)

cv.imwrite(args.output, pano);
print("stitching completed successfully. %s saved!" % args.output)

上面写了一大堆, 然鹅, 直接拿来用的话, 用下面的代码可以了, 简单粗暴

import numpy as np
import cv2
from cv2 import Stitcher

if __name__ == "__main__":
 img1 = cv2.imread('1.jpg')
 img2 = cv2.imread('2.jpg')
 stitcher = cv2.createStitcher(False)
 #stitcher = cv2.Stitcher.create(cv2.Stitcher_PANORAMA), 根据不同的OpenCV版本来调用
 (_result, pano) = stitcher.stitch((img1, img2))
 cv2.imshow('pano',pano)
 cv2.waitKey(0)

效果如下:

原图:

python+OpenCV实现图像拼接

python+OpenCV实现图像拼接

拼接后的图像:

python+OpenCV实现图像拼接

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
python读写二进制文件的方法
May 09 Python
python自动翻译实现方法
May 28 Python
使用Python3制作TCP端口扫描器
Apr 17 Python
插入排序_Python与PHP的实现版(推荐)
May 11 Python
Python cookbook(数据结构与算法)保存最后N个元素的方法
Feb 13 Python
使用pandas read_table读取csv文件的方法
Jul 04 Python
python查看模块,对象的函数方法
Oct 16 Python
python实现简单图片物体标注工具
Mar 18 Python
Django Rest framework解析器和渲染器详解
Jul 25 Python
pycharm实现print输出保存到txt文件
Jun 01 Python
python实现批量提取指定文件夹下同类型文件
Apr 05 Python
怎么用Python识别手势数字
Jun 07 Python
windows下Pycharm安装opencv的多种方法
Mar 05 #Python
解决pycharm中opencv-python导入cv2后无法自动补全的问题(不用作任何文件上的修改)
Mar 05 #Python
浅谈Python的方法解析顺序(MRO)
Mar 05 #Python
python环境下安装opencv库的方法
Mar 05 #Python
Python序列化pickle模块使用详解
Mar 05 #Python
Window系统下Python如何安装OpenCV库
Mar 05 #Python
Python bytes string相互转换过程解析
Mar 05 #Python
You might like
PHP5中Cookie与 Session使用详解
2013/04/30 PHP
php代码书写习惯优化小结
2013/06/20 PHP
php实现在服务器上创建目录的方法
2015/03/16 PHP
PHP实现动态柱状图改进版
2015/03/30 PHP
Apache连接PHP后无法启动问题解决思路
2015/06/18 PHP
PHP 实现人民币小写转换成大写的方法及大小写转换函数
2017/11/17 PHP
php查询内存信息操作示例
2019/05/09 PHP
JavaScript中使用构造函数实现继承的代码
2010/08/12 Javascript
JS刷新框架外页面七种实现代码
2013/02/18 Javascript
Javascript实现返回上一页面并刷新的小例子
2013/12/11 Javascript
jQuery中trigger()方法用法实例
2015/01/19 Javascript
jquery小火箭返回顶部代码分享
2015/08/19 Javascript
js获取表格的行数和列数的方法
2015/10/23 Javascript
再谈Javascript中的异步以及如何异步
2016/08/19 Javascript
微信小程序如何修改radio和checkbox的默认样式和图标
2019/07/24 Javascript
Vue实现图片与文字混输效果
2019/12/04 Javascript
JavaScript前端开发时数值运算的小技巧
2020/07/28 Javascript
Python3基础之条件与循环控制实例解析
2014/08/13 Python
在Python中利用Into包整洁地进行数据迁移的教程
2015/03/30 Python
Python中在for循环中嵌套使用if和else语句的技巧
2016/06/20 Python
一道python走迷宫算法题
2018/01/22 Python
python操作excel的方法
2018/08/16 Python
Mac安装python3的方法步骤
2019/08/09 Python
python文件路径操作方法总结
2020/12/21 Python
使用HTML5做的导航条详细步骤
2020/10/19 HTML / CSS
台湾租车首选品牌:IWS艾维士租车
2019/05/03 全球购物
2019年Java面试必问之经典试题
2012/09/12 面试题
社区端午节活动方案
2014/01/28 职场文书
化妆品促销方案
2014/02/24 职场文书
销售顾问岗位职责
2014/02/25 职场文书
工程采购员岗位职责
2014/03/09 职场文书
车辆工程专业求职信
2014/04/28 职场文书
学雷锋演讲稿汇总
2014/05/10 职场文书
团代会开幕词
2015/01/28 职场文书
幼儿园托班教育随笔
2015/08/14 职场文书
Go 语言结构实例分析
2021/07/04 Golang