2015-03-13 76 views
0

我在要處理的文件夾中有大約200-400張圖片。我正在嘗試使用python編寫一種腳本來處理這些圖像。圖像輸出正在改變,但有一些我知道的邏輯錯誤,但不想修改。這些是我到目前爲止的兩個文件使用Python和OpenCV從目錄處理圖像

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個圖像

+0

究竟是什麼問題? – Micka 2015-03-13 07:40:19

+0

@Micka我需要鏈接兩個python腳本才能在所有圖像上運行300x300的調整大小 – QWERTY 2015-03-13 07:47:27

回答

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調用寫一個文件,並且你的「19個文件」將是fi les匹配glob

+0

正是我所需要的。謝謝。你能詳細闡述一下你編輯的內​​容以及你爲什麼這麼做。它會幫助我,我仍然是新的Python。謝謝 :) – QWERTY 2015-03-13 07:46:20