cv2.imwrite保存多张图片
时间: 2023-08-19 18:14:22 浏览: 126
可以使用循环来保存多张图片。下面是一个简单的示例代码:
```python
import cv2
# 读取多张图片
image1 = cv2.imread('image1.jpg')
image2 = cv2.imread('image2.jpg')
image3 = cv2.imread('image3.jpg')
# 保存多张图片
cv2.imwrite('output1.jpg', image1)
cv2.imwrite('output2.jpg', image2)
cv2.imwrite('output3.jpg', image3)
```
这个例子中,我们首先使用 `cv2.imread()` 函数读取三张图片。然后使用 `cv2.imwrite()` 函数将它们保存到不同的文件中。可以在 `cv2.imwrite()` 函数中指定要保存的文件名和要保存的图像对象。如果需要保存多张图片,可以在循环中重复使用 `cv2.imwrite()` 函数。
相关问题
cv2.imwrite
`cv2.imwrite` 是 OpenCV 中用来保存图片的函数。它接受两个参数:第一个参数是保存图片的文件名(包括文件路径),第二个参数是要保存的图片数据。可以使用 `cv2.imread` 读取一张图片,然后使用 `cv2.imwrite` 保存这张图片。
示例:
```
import cv2
# Read an image
img = cv2.imread("example.jpg")
# Save the image
cv2.imwrite("example_output.jpg", img)
```
这里有一些可用的可选参数,比如可以使用第三个参数来指定图片压缩质量。默认质量为95。
```
cv2.imwrite("example_output.jpg", img, [cv2.IMWRITE_JPEG_QUALITY, 90])
```
还有可以用来指定要保存的图片的格式,比如PNG或者BMP格式。
```
cv2.imwrite("example_output.png", img)
```
cv2.imwrite保存中文路径乱码问题
在使用cv2.imwrite()函数保存中文路径时,可能会出现乱码问题。这是因为cv2.imwrite()函数默认使用ASCII编码,无法处理中文字符。为了解决这个问题,可以使用Python自带的os模块中的函数进行路径转换。
具体操作如下:
1. 使用os.makedirs()函数创建文件夹,确保中文路径被正确创建。
2. 使用os.path.join()函数将中文路径和图片文件名拼接成一个完整的路径。
3. 使用cv2.imencode()函数将图片编码成二进制格式。
4. 使用open()函数打开文件,以二进制方式写入图片数据。
5. 关闭文件。
示例代码如下:
```
import os
import cv2
# 中文路径
path = '路径/中文文件夹'
# 图片文件名
filename = 'test.jpg'
# 创建文件夹
if not os.path.exists(path):
os.makedirs(path)
# 拼接完整路径
filepath = os.path.join(path, filename)
# 读取图片
img = cv2.imread('test.jpg')
# 将图片编码成二进制格式
_, img_encode = cv2.imencode('.jpg', img)
# 写入文件
with open(filepath, 'wb') as f:
f.write(img_encode)
```
这样就可以成功保存中文路径下的图片了。
阅读全文