Не могу передать аргументы скрипту из списка - PullRequest
0 голосов
/ 03 мая 2020

Я пытаюсь запустить скрипт python для каждого png файла в папке. run.py принимает png-файл по --path_to_load arg и возвращает обработанный png-файл в path_to_save arg. Мне удалось получить файлы png в список pngfiles и настроить для l oop, как показано ниже:

import glob
import os
import cv2

pngfiles = []

for pngfile in glob.glob('selected_faces/**/*.png', recursive=True):
    pngfiles.append(pngfile) #returns 'selected_faces\pngfilename.ext' to a list

print (pngfiles[:2])

#['selected_faces\\S005_001_00000001.png', 
#'selected_faces\\S005_001_00000011.png']    

    for file in pngfiles:
        filename = file.split('\\')[1] 
        print(filename)
        #S005_001_00000001.png
        #returns correct first file name    
        save_path = os.path.join('aligned_faces',filename) #returns save path
        print(save_path)
        #aligned_faces\S005_001_00000001.png
        #returns correct save path
        print(file)
        #selected_faces\S005_001_00000001.png
        #returns correct load path
        %run run.py --mode 1 --path_to_load=file --path_to_save=save_path

Запуск кода возвращает ошибку подтверждения OpenCV! _Src_empty (), вероятно, из-за того, что входной файл не может ' быть прочитанным.

error: OpenCV(4.2.0) C:\projects\opencv-python\opencv\modules\imgproc\src\color.cpp:182: error: (-215:Assertion failed) !_src.empty() in function 'cv::cvtColor'

Но выполнение кода из l oop позволяет говорит, что только для одного файла, это работает как задумано:

%run run.py --mode 1 --path_to_load="selected_faces\image1.png" --path_to_save="aligned_faces\image1.png"

Я проверил, что оба file и save_path являются строками и, похоже, с этим проблем нет. Или, может быть, я что-то упускаю, очевидно.

Спасибо.

1 Ответ

1 голос
/ 03 мая 2020

Я не думаю, что вы используете %run право:

In [406]: for x in ['one','tow','three']: 
     ...:     %run echo.py -x x 
     ...:                                                                                              
['echo.py', '-x', 'x']
['echo.py', '-x', 'x']
['echo.py', '-x', 'x']
In [407]: for x in ['one','tow','three']: 
     ...:     %run echo.py -x $x 
     ...:                                                                                              
['echo.py', '-x', 'one']
['echo.py', '-x', 'tow']
['echo.py', '-x', 'three']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...