Невозможно прочитать изображение в tmp в gcloud через cv2.imread(), оно ничего не возвращает

Я пытаюсь прочитать изображение из моей папки tmp в моем приложении gcloud django для дальнейшей обработки обнаружения лиц, но моя функция cv2.imread() не возвращает ничего, когда я предоставляю ей путь к файлу в качестве аргумента. в моем пути к файлу нет проблем, поскольку я его тестировал.

...
im = cv2.imread("/tmp/" + pathname)
print("IMAGE IS ", im)                #returns IMAGE IS None
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
...

Ошибка, которую я получаю

OpenCV (4.2.0) /io/opencv/modules/imgproc/src/color.cpp:182: ошибка: (-215: утверждение не удалось) !_src.empty() в функции 'cvtColor'

Существование проверенного файла с использованием следующего фрагмента кода:

if os.path.exists("/tmp/" + pathname):
       print("IMAGE EXISTS !") //returns this
else:
       print("IMAGE DOESNT EXISTS !")

person Aayush Gupta    schedule 29.04.2020    source источник


Ответы (2)


Путь к файлу - это проблема. cv2.imread не будет показывать ошибку при вводе неверного пути к изображению. Вы пробовали без / перед tmp?

pathname = "image.jpg"
im = cv2.imread("tmp/"+pathname)
print("IMAGE IS ", im)  
gray = cv2.cvtColor(im, cv2.COLOR_BGR2GRAY)
person Inzer Lee    schedule 29.04.2020
comment
но теперь я решил свою проблему, используя stackoverflow.com/questions/44211221/ - person Aayush Gupta; 29.04.2020

import cv2
import numpy as np
import urllib

url = "https://i.stack.imgur.com/AVWX7.jpg";
resp = urllib.urlopen(url)
image = np.asarray(bytearray(resp.read()), dtype="uint8")
image = cv2.imdecode(image, cv2.IMREAD_COLOR)

Я РЕШИЛ ЭТОТ ПОДХОД

Чтобы преобразовать gs в обычный URL.

bucket = 'example-bucket'
file = 'sunset.jpg'

gcs_url = 'https://%(bucket)s.storage.googleapis.com/%(file)s' % {'bucket':bucket, 'file':file}

print gcs_url
person Aayush Gupta    schedule 29.04.2020