2016-05-31 2 views
2

cv2.imread("some.jpg") не может прочитать много разных jpg. Я проверил миллион разных вещей:cv2.imread сбой в скрипте, а не в командной строке

  1. Выполнить точно такой же код в терминале - читает и открывает изображения просто отлично
  2. Я проверил номера версии как питона и CV2 - они точно так же: 3.4.3 и 3.1.0.
  3. Используемые полные пути к файлам. Без разницы
  4. Изображения существуют: я открыл вручную десятки, чтобы узнать, есть ли что-то.
  5. Сроки: добавлены паузы, чтобы убедиться, что это не проблема времени.
  6. Проверено, чтобы убедиться, img/filename существует с print(os.path.exists(filename)) # prints True
  7. HARDCODED путь к файлу в `IMG = imread ("gif_pos_0pW-п-wb8U4_0.jpg") # печать (IMG) ... Ни
filename = random.choice(filename_list) 
print("reading:", filename) # prints correct/verified jpg paths 
sleep(.5) 
img = cv2.imread(filename) 
sleep(.3) 
print(img) # none 
read_image = cv2.resize(img, (IMAGE_WIDTH, IMAGE_HEIGHT), 3) 

img никого и изменение размера строки завершается с: OpenCV Error: Assertion failed (ssize.area() > 0) in resize, file /home/user/opencv/modules/imgproc/src/imgwarp.cpp, line 3229

Это Ubuntu 15,1, если это имеет значение. Любые мысли о том, что может быть причиной этого?

Да, я знаю, что этот вопрос существует в другом месте. Существующие ответы мне не помогли. У меня четверка проверила все. Кажется, что-то происходит.

Самая странная часть - это то, что cv2 отлично читает изображение из командной строки с такими же точными версиями python и cv2.

EDIT: это сценарий, поэтому я просто делаю python3 train.py.

+0

ли вы проверить 'sys.executable' одинакова для обоих? – user1767754

+0

нет, но я попробую сейчас. EDIT: это то же самое ... – JohnAllen

+0

Вы говорите, что одно изображение открывается, а другое - нет? Или изображение вообще не открывается? – tfv

ответ

3

Сценарий может выполняться как отдельный пользователь с разными привилегиями или в другом месте, чем выполнение кода в командной строке.

  • Проверить наличие файла в коде с os.path.isfile
  • предоставить подробную информацию о скрипте (язык) и как запустить его. Это задание cron или исполняемый файл? Запустите скрипт вручную из командной строки и только после этого создайте пакетные задания или вызовите их из других скриптов.
  • Можете ли вы привести примеры путей?
  • Работает ли это, пытаясь загрузить одно изображение, расположенное в том же каталоге, без использования random.choice?)
  • Содержит ли код ниже изображение с изображением? Меня устраивает.

enter image description here

import cv2 

img=cv2.imread("image.jpg") 

cv2.imshow('Test',img) 
if cv2.waitKey(0) & 0xff == 27: 
    cv2.destroyAllWindows() 
+0

Забыл добавить, что я действительно проверял, что изображения существуют с чем-то похожим на наш 'os.path.isfile'. Добавлю это и детали скрипта – JohnAllen

+0

Запустили сценарий из того же каталога на тех же изображениях, с которых я запускал интерпретатор. Разве это не должно быть так? Совершенно верно, что я сделал все изображения, которые можно было прочитать прошлой ночью, но дважды проверю это. Может быть, я не рекурсивно сделал изображения доступными для чтения? – JohnAllen

+0

В системах Unix и скриптах я бы * только * работал с полными путями. – tfv

Смежные вопросы