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

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

  • 可以用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 + 1
    img_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.height
    ws.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文件。

  • 14
    点赞
  • 23
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ywfwyht

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值