使用 Python 和 OpenCV 从目录处理图像
Processing Images from a directory using Python and 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次然后进入第2轮test2.py。我正在尝试更正程序以继续处理下一张图像,并将图像名称输出为 imageresized1.jpg、imageresized2.jpg 等。现在图像是正确的名称,但图像是错误的。由于 for 循环,只有一张图像正在处理。 range(19) 是我文件夹中的 19 张图片
怎么样
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
匹配的文件。
我在一个文件夹中大约有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次然后进入第2轮test2.py。我正在尝试更正程序以继续处理下一张图像,并将图像名称输出为 imageresized1.jpg、imageresized2.jpg 等。现在图像是正确的名称,但图像是错误的。由于 for 循环,只有一张图像正在处理。 range(19) 是我文件夹中的 19 张图片
怎么样
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
匹配的文件。