当前位置: 首页 > news >正文

OpenCV将两张图片拼接成一张图片

OpenCV将两张图片拼接成一张图片

  • 示例代码1
  • 示例代码2
  • 代码示例3
  • 示例代码4

  • 可以用opencv或者numpy的拼接函数,直接将两张图拼接到一起,很简单方便,参考代码2,推荐此方式
  • 新建图片,将两张图片的像素值填充到新图片对应位置上即可,参考代码1。

示例代码1

以下是将两张图片拼接成一张图片的示例代码:

import cv2
import numpy as np # 三通道
img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')# 确定两张图片的大小
height, width, channels = img1.shape
new_width = width + img2.shape[1]# 创建一张新的图片
new_img = np.zeros((height, new_width, channels), dtype=np.uint8)# 将第一张图片复制到新图片的左侧
new_img[:,:width,:] = img1# 将第二张图片复制到新图片的右侧
new_img[:,width:,:] = img2# 显示合并后的图片
cv2.imshow('Merged Image', new_img)# 等待关闭窗口
cv2.waitKey(0)# 释放资源
cv2.destroyAllWindows()

示例代码2

以下是将两张图片在同一个窗口显示的示例代码:

import cv2
import numpy as np img1 = cv2.imread('image1.jpg')
img2 = cv2.imread('image2.jpg')## 使用numpy
# 将两张图片垂直堆叠
img_vstack = np.vstack((img1, img2))# 将两张图片横向拼接在一起
result = np.hstack([img1, img2])# 将两张图片拼接到一起
img = np.concatenate((img1, img2), axis=1)## 使用opencv
vimg = cv2.vconcat((img1, img2)) # 垂直方向
himg = cv2.hconcat((img1, img2)) # 水平方向# 显示图片
cv2.imshow('Two Images in One Window', img_vstack)
cv2.waitKey(0)
cv2.destroyAllWindows()

代码示例3

首先需要安装 xlrdxlwt 模块,可以使用以下命令安装:

pip install xlrd
pip install xlwt

然后可以使用以下代码将图片写入 Excel 单元格内,并调整单元格大小与图片匹配:

import xlwt
import xlrd
from PIL import Image# 打开 Excel 文件
book = xlwt.Workbook(encoding='utf-8')
sheet = book.add_sheet('Sheet1')# 打开图片文件,并设置图片大小
img = Image.open('image.jpg')
img_width, img_height = img.size# 设置单元格宽度和高度与图片宽度和高度一致
sheet.col(0).width = img_width
sheet.row(0).height = img_height# 将图片写入单元格
sheet.insert_bitmap('image.jpg', 0, 0)# 保存 Excel 文件
book.save('image.xls')

此代码是将一张名为 image.jpg 的图片写入 Excel 的第一行第一列的单元格内,并设置单元格宽度和高度与图片宽度和高度一致。保存 Excel 文件的名字为 image.xls。如果需要批量处理多张图片,可以使用循环语句来遍历所有图片。

示例代码4

以下是一个示例代码,可以实现将指定文件夹内所有图片路径及其对应的图片插入到指定的Excel表格内,并调整单元格大小以适应图片大小:

import os
from openpyxl import Workbook
from openpyxl.utils import get_column_letter
from openpyxl.drawing.image import Image# 设置文件夹路径和Excel文件名
folder_path = r"C:\folder_path"
excel_file = "images.xlsx"# 创建Excel工作簿
wb = Workbook()
ws = wb.active# 获取文件夹内所有图片路径和文件名
img_files = [f for f in os.listdir(folder_path) if f.endswith('.jpg') or f.endswith('.png')]# 将文件名和路径分别写入Excel单元格
for i, img_file in enumerate(img_files):row = i + 1img_path = os.path.join(folder_path, img_file)ws.cell(column=1, row=row, value=img_file)ws.cell(column=2, row=row, value=img_path)# 将图片插入Excel单元格并调整单元格大小img = Image(img_path)img_width, img_height = img.width, img.heightws.row_dimensions[row].height = img_height / 3  # 调整行高ws.column_dimensions[get_column_letter(3)].width = img_width / 6  # 调整列宽# 将图片添加到单元格中cell = sheet.cell(row=i+1, column=1)cell.value = img_path cell.alignment = openpyxl.styles.Alignment(horizontal='center', vertical='center')# cell._style = openpyxl.styles.NamedStyle(name='Hyperlink', #                                          hyperlink=f'HYPERLINK("{image_path}")')ws.add_image(img, f"C{row}")  # 在指定单元格添加图片# 保存Excel文件
wb.save(excel_file)

在上述代码中,我们使用了openpyxl库来处理Excel表格,并使用os库来获取指定文件夹内的所有图片文件路径和文件名。对于每个图片文件,我们将其文件名和路径分别写入Excel单元格的第1列和第2列,然后将该图片插入Excel单元格的第3列并调整单元格大小以适应图片大小。最后保存Excel文件。

相关文章:

  • 有了倾斜摄影,如何搭建一座智慧城市?
  • CMakeLists.txt:打印find_package变量;判断库文件路径设定是否正确;install文件设置
  • Ps:裁剪工具 - 裁剪预设的应用
  • 深入理解C语言指针基础概念:定义、内存地址与声明初始化
  • 2023年【制冷与空调设备安装修理】考试报名及制冷与空调设备安装修理考试资料
  • 2023APMCM亚太杯数学建模选题建议及初步思路
  • Android: ListView + ArrayAdapter 简单应用
  • 任意文件下载漏洞(CVE-2021-44983)
  • Java WebSocket框架
  • WPS或Excel查找A列中有B列没有的值
  • redis运维(十八)pipeline
  • 二维数值型数组例题
  • 【黑马甄选离线数仓day04_维度域开发】
  • jQuery 第十一章(表单验证插件推荐)
  • MySQL与PostgreSQL 的一些SQL
  • .pyc 想到的一些问题
  • [Vue CLI 3] 配置解析之 css.extract
  • Asm.js的简单介绍
  • CODING 缺陷管理功能正式开始公测
  • GitUp, 你不可错过的秀外慧中的git工具
  • Java 多线程编程之:notify 和 wait 用法
  • jQuery(一)
  • Python打包系统简单入门
  • Quartz实现数据同步 | 从0开始构建SpringCloud微服务(3)
  • ReactNative开发常用的三方模块
  • SQL 难点解决:记录的引用
  • text-decoration与color属性
  • Vue.js源码(2):初探List Rendering
  • XML已死 ?
  • 记一次删除Git记录中的大文件的过程
  • 蓝海存储开关机注意事项总结
  • 马上搞懂 GeoJSON
  • 如何合理的规划jvm性能调优
  • 使用Swoole加速Laravel(正式环境中)
  • 小程序01:wepy框架整合iview webapp UI
  • 用quicker-worker.js轻松跑一个大数据遍历
  • 在GitHub多个账号上使用不同的SSH的配置方法
  • 中国人寿如何基于容器搭建金融PaaS云平台
  • 格斗健身潮牌24KiCK获近千万Pre-A轮融资,用户留存高达9个月 ...
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​卜东波研究员:高观点下的少儿计算思维
  • ​字​节​一​面​
  • ${ }的特别功能
  • (Bean工厂的后处理器入门)学习Spring的第七天
  • (pt可视化)利用torch的make_grid进行张量可视化
  • (动手学习深度学习)第13章 计算机视觉---图像增广与微调
  • (附源码)计算机毕业设计SSM疫情下的学生出入管理系统
  • (附源码)计算机毕业设计SSM智慧停车系统
  • (汇总)os模块以及shutil模块对文件的操作
  • (利用IDEA+Maven)定制属于自己的jar包
  • (入门自用)--C++--抽象类--多态原理--虚表--1020
  • (三)elasticsearch 源码之启动流程分析
  • (四十一)大数据实战——spark的yarn模式生产环境部署
  • .NET Core实战项目之CMS 第一章 入门篇-开篇及总体规划
  • .NET 解决重复提交问题