行业知识
OpenCV将两张图片拼接成一张图片
2026-11-12 21:15:52
来源:互联网转载
OpenCV将两张图片拼接成一张图片
- 示例代码1
- 示例代码2
- 代码示例3
- ���例代码4
- 可以用opencv或者numpy的拼接函数,直接将两张图拼接到一起,很简单方便,参考代码2,推荐此方式。
- 新建图片,将两张图片的像素值填充到新图片对应位置上即可,参考代码1。
示例代码1
以下是将两张图片拼接成一张图片的示例代码:
()import cv2import numpy as np # 三通道img1 = cv2.imread('image1.jpg')img2 = cv2.imread('image2.jpg')# 确定两张图片的大小height, width, channels = img1.shapenew_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 cv2import 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)## 使用opencvvimg = cv2.vconcat((img1, img2)) # 垂直方向himg = cv2.hconcat((img1, img2)) # 水平方向# 显示图片cv2.imshow('Two Images in One Window', img_vstack)cv2.waitKey(0)cv2.destroyAllWindows()代码示例3
首先需要安装 xlrd 和 xlwt 模块,可以使用以下命令安装:
()pip install xlrdpip install xlwt
然后可以使用以下代码将图片写入 Excel 单元格内,并调整单元格大小与图片匹配:
import xlwtimport xlrdfrom 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_widthsheet.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 osfrom openpyxl import Workbookfrom openpyxl.utils import get_column_letterfrom 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文件。