【问题标题】:Processing Images from a directory using Python and OpenCV使用 Python 和 OpenCV 处理目录中的图像
【发布时间】:2015-03-13 07:33:14
【问题描述】:

我在一个文件夹中有大约 200-400 张图片要处理。我正在尝试使用 python 编写一种脚本来处理这些图像。图像输出正在改变,但有一些我知道但不知道修改的逻辑错误。这是我目前拥有的两个文件

test2 和 resize 是我创建的 2 个 .py 文件。 test2.py 将调用 resize.py 它将调整目录中的图像大小

test2.py

import glob
import cv2


from resize import process


for image_file in glob.iglob('/home/winowa/Desktop/Intern101/fisherFace/test/*.jpg'):
        process(image_file)

resize.py

import cv2

def process(filename):

    image = cv2.imread(filename)


    print image.shape

    r = 100.0 / image.shape[1]
    dim = (100, int(image.shape[0] *r))

    imageresized = cv2.resize(image,(300,300),dim,interpolation = cv2.INTER_AREA)
    for i in range(19):
        cv2.imwrite( 'imageresized_{}.jpg'.format(i) ,imageresized )
        print 'imageresized_{}.jpg'.format(i)

我知道在进入 resize.py 之后,它会在进入第二轮 test2.py 之前循环 19 次。我正在尝试更正程序以转到下一张图像,并将图像名称输出为 imageresized1.jpg、imageresized2.jpg 等。现在图像是正确的名称,但图像是错误的。由于 for 循环,只处理了一张图像。 range(19) 是我文件夹中的 19 张图片

【问题讨论】:

  • 问题到底是什么?
  • @Micka 我需要链接两个 python 脚本以对特定文件夹中的所有图像运行 300x300 的调整大小

标签: python python-2.7 opencv


【解决方案1】:

怎么样

test2.py

import glob
import cv2

from resize import process

for (i,image_file) in enumerate(glob.iglob('/home/winowa/Desktop/Intern101/fisherFace/test/*.jpg')):
        process(image_file, i)

resize.py

import cv2

def process(filename, key):

    image = cv2.imread(filename)

    print image.shape

    r = 100.0 / image.shape[1]
    dim = (100, int(image.shape[0] *r))

    imageresized = cv2.resize(image,(300,300),dim,interpolation = cv2.INTER_AREA)

    cv2.imwrite( 'imageresized_{}.jpg'.format(key) ,imageresized )
    print 'imageresized_{}.jpg'.format(key)

这假设您只想为每次调用 process 编写一个文件,并且您的“19 个文件”将是与 glob 匹配的文件。

【讨论】:

  • 正是我需要的。谢谢。您能否详细说明您编辑的内容以及您这样做的原因。它将帮助我,我仍然是 python 的新手。谢谢:)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-06-11
  • 1970-01-01
  • 2023-04-04
  • 1970-01-01
相关资源
最近更新 更多