cv2.imwrite在循环中如何存图
时间: 2023-11-19 07:14:08 浏览: 236
如果您想在循环中使用cv2.imwrite()存储图像,可以采用以下步骤:
1. 确保您在循环中的每一次迭代中都为保存的文件命名,以避免覆盖已保存的文件。
2. 确保您在循环中使用cv2.imread()函数加载每个图像。
3. 对于每个图像,在循环中使用cv2.imwrite()函数将其保存到磁盘上。
以下是一个示例代码:
```
import cv2
import os
# 读取文件夹中所有图像
img_folder = 'path/to/folder'
img_files = os.listdir(img_folder)
# 遍历所有图像,进行操作
for img_file in img_files:
# 读取图像
img_path = os.path.join(img_folder, img_file)
img = cv2.imread(img_path)
# 对图像进行操作
...
# 保存图像
save_path = os.path.join('path/to/output/folder', img_file)
cv2.imwrite(save_path, img)
```
在上述示例代码中,我们遍历了一个文件夹中的所有图像,然后针对每个图像进行了一些操作。最后,我们使用cv2.imwrite()将图像保存到磁盘上。请注意,我们使用了os模块来构建文件路径,以便保存文件时不会覆盖已有的文件。
相关问题
c = cv2.waitKey(0) if c == ord("q"): print("保存") cv2.imwrite("out.png", dst) break
这段代码使用了OpenCV库,等待用户输入按键,并将按键的Unicode整数表示保存在变量`c`中。如果用户按下的键是字母'q',则会将处理后的图像保存为PNG格式的文件,并退出循环。具体来说,`cv2.waitKey(0)`会等待用户输入按键,直到用户按下某个键为止。如果用户按下了按键,则该函数返回该键的Unicode整数表示。如果用户没有按下任何键,或者等待时间超时,则该函数返回-1。因此,这段代码会一直等待用户按下字母'q'键,直到用户按下该键为止才会退出循环。
翻译代码def resize(): img_path = "Normalresult" save_path = "result" img_names = os.listdir(img_path) # 以列表的形式获取文件夹中的所有文件的名字和格式(例如:0.jpg) for img_name in img_names: img = os.path.join(img_path, img_name) # 将文件的绝对路径与每个文件名字进行拼接,以获取该文件 img = cv2.imread(img) # 读取该文件(图片) # 一是通过设置图像缩放比例,即缩放因子,来对图像进行放大或缩小 res1 = cv2.resize(img, None, fx=2, fy=2, interpolation=cv2.INTER_LINEAR) height, width = img.shape[:2] # 二是直接设置图像的大小,不需要缩放因子 res2 = cv2.resize(img, (int(0.8 * width), int(0.8 * height)), interpolation=cv2.INTER_AREA) dir_name1 = ''.join(random.sample(string.ascii_letters + string.digits, 8)) dir_name2 = ''.join(random.sample(string.ascii_letters + string.digits, 8)) cv2.imwrite(os.path.join(save_path, dir_name1 + '.jpg'), res1) cv2.imwrite(os.path.join(save_path, dir_name2 + '.jpg'), res2) cv2.imwrite(os.path.join(save_path, img_name), img)
这段代码的作用是对指定路径下的所有图片进行缩放,并将缩放后的图片保存到指定的保存路径中。具体来说,代码首先使用 os 库中的 listdir 函数获取指定路径下所有图片的文件名,并使用循环遍历每个图片文件名。在循环中,代码使用 os 库中的 join 函数将指定路径和当前图片文件名拼接成完整的路径,并使用 cv2 库中的 imread 函数读取当前图片。
接着,代码使用 cv2 库中的 resize 函数对当前图片进行两种缩放方式的处理。第一种方式是通过设置缩放因子 fx 和 fy 来对图像进行放大或缩小,得到缩放后的图像 res1。第二种方式是直接设置缩放后的图像的大小,得到缩放后的图像 res2。
然后,代码使用 random 和 string 库中的函数生成随机的文件名,并使用 cv2 库中的 imwrite 函数将缩放后的图像 res1 和 res2 以及原始图像 img 分别保存到指定的保存路径中。最后,代码继续循环处理下一个图片。
阅读全文