Python 将多张jpg图片拼接到一行 代码实现
时间: 2024-05-15 21:14:44 浏览: 150
可以使用PIL库中的Image类来实现图片的拼接,具体代码如下:
```python
from PIL import Image
def combine_images(images, output_image):
widths, heights = zip(*(i.size for i in images))
max_height = max(heights)
total_width = sum(widths)
new_image = Image.new('RGB', (total_width, max_height))
x_offset = 0
for image in images:
new_image.paste(image, (x_offset, 0))
x_offset += image.size[0]
new_image.save(output_image)
images = [Image.open(f'image{i}.jpg') for i in range(1, 6)]
combine_images(images, 'combined.jpg')
```
以上代码会将当前目录下的`image1.jpg`至`image5.jpg`五张图片横向拼接,并保存为`combined.jpg`。
相关问题
使用opencv 图片拼接,python代码,拼接36张图片
在Python中使用OpenCV进行图片拼接,你可以使用`cv2.hconcat()`函数水平拼接图片,或者`cv2.vconcat()`函数垂直拼接。这里是一个简单的例子,假设你有36张图片都在一个目录下,每行9张:
```python
import cv2
import os
# 获取当前目录下的所有图片文件名
image_dir = 'path_to_your_images_directory'
images = [img for img in os.listdir(image_dir) if img.endswith('.jpg') or img.endswith('.png')]
# 将图片分为4行,每行9张
rows = len(images) // 9 + (len(images) % 9 > 0)
output_height, output_width = rows * images[0].shape[:2][0], sum(img.shape[1] for img in images)
# 创建一个空的大图像来存放拼接结果
result = None
for i, image_name in enumerate(images):
# 读取单张图片
img = cv2.imread(os.path.join(image_dir, image_name))
# 如果这是第一个图像,创建大图
if result is None:
result = np.zeros((output_height, output_width, img.shape[2]), dtype=img.dtype)
# 根据图片的位置计算其在大图中的起始位置
y_start = i // 9 * images[0].shape[0]
x_start = i % 9 * img.shape[1]
# 拼接图片到大图上
result[y_start:y_start+img.shape[0], x_start:x_start+img.shape[1]] = img
# 显示或保存拼接后的图片
cv2.imshow('Mosaic', result)
cv2.waitKey(0)
cv2.destroyAllWindows()
```
这个代码将图片按照网格形式拼接,如果你想要其他排列方式,只需调整分割图片的方式即可。
python opencv 两张图片拼接
当然可以。在Python中使用OpenCV库进行图像处理是一个非常常见的任务,包括将两张图片拼接在一起。下面是详细的步骤以及代码示例:
### 步骤说明
#### 准备工作
首先需要安装`opencv-python`包,如果尚未安装的话,可以通过pip命令快速完成:
```bash
pip install opencv-python
```
#### 拼接过程概述
1. **读取图像**:利用cv2.imread()函数加载要拼接的两幅图。
2. **调整大小(可选)**:如果你希望两幅图具有相同的尺寸,则应先通过cv2.resize()来设定统一的高度宽度比值。
3. **水平或垂直方向上直接合并**:对于简单的场景可以直接沿某一维度堆叠图像数组;这里我们采用numpy.hstack或者vstack来进行操作。
4. **显示结果**:最后用imshow展示最终效果,并保存成新文件以便后续查看对比等需求。
#### 示例代码
下面是一段具体的实现代码片段用于演示上述流程:
```python
import cv2
import numpy as np
# 加载待拼接的图片
img_left = cv2.imread('left_image.jpg')
img_right = cv2.imread('right_image.jpg')
# 调整右侧图片到左侧图片同样高度 (假设想要保持左右两边画面比例一致)
height, width = img_left.shape[:2]
dim = (width, height) # 目标尺寸
resized_img_right = cv2.resize(img_right, dim)
# 将两个图像水平拼接到一起
combined_image = np.hstack((img_left, resized_img_right))
# 显示并保存结果
cv2.imshow("Combined Image", combined_image)
cv2.waitKey(0) & 0xFF == ord('q') # 等待按键关闭窗口
cv2.destroyAllWindows()
output_filename = "merged_images.jpg"
cv2.imwrite(output_filename, combined_image)
print(f"已成功创建 {output_filename}")
```
这段代码实现了基本的功能,即从磁盘读入图像、按需缩放右半部分使其匹配左半边高宽然后将其们平铺于一行内形成单张新的长条形图像,并提供了一个选项让用户观看生成的结果同时还会自动地把合成后的版本另存为一个新的JPEG文档。
---
阅读全文
相关推荐














