2017-02-06 11 views
0

Я использую Python, Open, Numpy и Scipy. У меня есть каталог изображений, которые я хочу повернуть на определенные углы. Я хочу создать скрипт. Я использую это, OpenCV Python rotate image by X degrees around specific point, но он не выглядит так, как я предполагал. Я получаю неверный план ротации, но я не думаю, что я должен это получить.Пройти через каталог изображений и повернуть их все x градусов и сохранить в каталог

Вот что мой код выглядит следующим образом:

from scipy import ndimage 
import numpy as np 
import os 
import cv2 

def main(): 
    outPath = "C:\Miniconda\envs\.." 
    path = "C:\Miniconda\envs\out\.." 
    for image_to_rotate in os.listdir(path): 
     rotated = ndimage.rotate(image_to_rotate, 45) 
     fullpath = os.path.join(outPath, rotated) 

    if __name__ == '__main__': 
    main() 

ответ

5

Вы должны действительно прочитать файл изображения перед вращением их. То, что делает ваш текущий код, это просто итерация через имена файлов (и каталогов).

os.listdir (путь) дает список содержимого папки (в основном только имя), а затем вам нужно открыть эти файлы, используя ndimage.imread() функцию.

Это должно работать:

from scipy import ndimage, misc 
import numpy as np 
import os 
import cv2 

def main(): 
    outPath = "C:\Miniconda\envs\.." 
    path = "C:\Miniconda\envs\out\.." 

    # iterate through the names of contents of the folder 
    for image_path in os.listdir(path): 

     # create the full input path and read the file 
     input_path = os.path.join(path, image_path) 
     image_to_rotate = ndimage.imread(input_path) 

     # rotate the image 
     rotated = ndimage.rotate(image_to_rotate, 45) 

     # create full output path, 'example.jpg' 
     # becomes 'rotate_example.jpg', save the file to disk 
     fullpath = os.path.join(outPath, 'rotated_'+image_path) 
     misc.imsave(fullpath, rotated) 

if __name__ == '__main__': 
    main() 

PS: Этот способ переборе содержимого папки работает только если есть только файлы в каталоге и без каких-либо подкаталогов. os.listdir (путь) вернет имена любых файлов, а также подкаталогов.

Вы можете узнать, как перечислять только файлы в каталоге из этого сообщения: How to list all files of a directory?