逐个打开图像,绘制矩形,然后保存在另一个文件夹中

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (4)

我想打开一个文件夹,里面有几个图像,在每个图像中都会绘制一个矩形并用相同的原始名称保存但在另一个文件夹中

问题是图像被创建但被覆盖,我无法自动保存相同的名称。我想我无法很好地定义for循环。

import cv2
import glob
path = r'dir\*.tif'  # only .tif images
for file in glob.glob(path):
    im = pl_image(file, size= x)
    cv2.rectangle(im,(x1,y1),(x2,y2),(0, 255, 0),2)
    cv2.rectangle(im,(x3,y1),(x4,y2),(0, 255, 0),2)
    cv2.rectangle(im,(x5,y1),(x6,y2),(0, 255, 0),2)
    cv2.rectangle(im,(x7,y1),(x8,y2),(0, 255, 0),2)
    cv2.rectangle(im,(x9,y1),(x10,y2),(0, 255, 0),2)
    cv2.imwrite('%s/%s.JPEG' %  , im) # this line I do not how to define, should be smt like this

此行有效,但不保存原始名称

cv2.imwrite(r'other_dir\img.png',im)
提问于
用户回答回答于
import cv2
import glob
path = r'dir\*.tif'  # only .tif images
output_folder_path = "/home/output/"
for file in glob.glob(path):
    im = pl_image(file, size= x)
    output_file_name = output_folder_path+file.split("/")[-1]
    cv2.rectangle(im,(x1,y1),(x2,y2),(0, 255, 0),2)
    cv2.rectangle(im,(x3,y1),(x4,y2),(0, 255, 0),2)
    cv2.rectangle(im,(x5,y1),(x6,y2),(0, 255, 0),2)
    cv2.rectangle(im,(x7,y1),(x8,y2),(0, 255, 0),2)
    cv2.rectangle(im,(x9,y1),(x10,y2),(0, 255, 0),2)
    cv2.imwrite(output_file_name, im)

Idea是拥有一个变量,用于存储输出文件夹+现有文件名的完全限定文件名

用户回答回答于

在保存新图像之前,请尝试更改当前工作目录的路径。

为此,您可以使用os模块并设置您必须使用的当前工作目录os.chdir(path)

import os
os.chdir(path)

希望能帮助到你 :)

所属标签

可能回答问题的人

  • 天使的炫翼

    17 粉丝531 提问36 回答
  • 富有想象力的人

    3 粉丝0 提问30 回答
  • 学生

    3 粉丝476 提问28 回答
  • o o

    4 粉丝494 提问27 回答

扫码关注云+社区

领取腾讯云代金券