使用Python和OpenCV从目录处理图像

时间:2015-03-13 07:33:14

标签: python python-2.7 opencv

我要处理的文件夹中有大约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之后它将循环19次,然后进入第二轮test2.py。我正在尝试更正程序以继续下一个图像,并将图像名称输出为imageresized1.jpg,imageresized2.jpg等。现在图像是正确的名称,但错误的图像。由于for循环,只有一个图像被撬开。范围(19)是我的文件夹中的19张图像

1 个答案:

答案 0 :(得分:0)

怎么样?

<强> 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写一个文件,并且您的&#34; 19文件&#34;将是glob匹配的文件。