2014-12-17 3 views
5

У меня есть загруженный файл в памяти. Я хочу манипулировать файлом cv2. В настоящее время я пишу файл на диск, а затем читаю его с cv2. Как я могу пропустить запись файла и загрузить его напрямую с помощью cv2?Можно загружать загруженное изображение непосредственно cv2?

file = request.files['file'] 
# if file and allowed_file(file.filename): 

# save file    
filename = secure_filename(file.filename) 
file_path = os.path.join(dressrank.config['SHOW_IMG_FOLDER'], filename); 
file.save(file_path) 
img_path = file_path 

# COLOR FATURE EXTRACTION 
img = read_img(img_path) 
img =img_resize(img, 500) 

ответ

7

Создайте массив numpy, используя загруженные данные. Декодируем этот массив с помощью cv2.

img = cv2.imdecode(numpy.fromstring(request.files['file'].read(), numpy.uint8), cv2.CV_LOAD_IMAGE_UNCHANGED) 

Смотрите также: Python OpenCV load image from byte string

+1

использование 'cv2.IMREAD_UNCHANGED' флаг, если вы используете OpenCV 3.0, так как флаги были изменены. [Ссылка здесь] (http://stackoverflow.com/a/32596174/1441324) – gentra

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