cv2.error: OpenCV (4.3.0) ../opencv_contrib/modules/dnn_superres/src/dnn_superres.cpp:97: ошибка: (-2: неопределенная ошибка) Модель не указана - PullRequest
2 голосов
/ 16 июня 2020

Я пробую эту статью;

https://towardsdatascience.com/deep-learning-based-super-resolution-with-opencv-4fd736678066

это код, скопированный из статьи;

импорт cv2 из cv2 import dnn_superres

sr = dnn_superres.DnnSuperResImpl_create ()

image = cv2.imread ('./ input.png')

path = " EDSR_x3.pb "sr.readModel (путь)

sr.setModel (" edsr ", 3)

result = sr.upsample (изображение)

cv2.imwrite ( "./upscaled.png", результат)

Я также пробовал OpenCV Super Resolution Tutorial;

https://docs.opencv.org/master/d5/d29/tutorial_dnn_superres_upscale_image_single.html

import cv2 from cv2 import dnn_superres

sr = dnn_superres.DnnSuperResImpl_create ()

image = cv2.imread ('./ image.png')

path = "EDSR_x4.pb" sr.readModel (путь)

sr.setModel ("edsr", 4)

result = sr.upsample (image)

cv2.imwrite ("./ upscaled.png" , результат)

Моя среда - anaconda3 opencv 4.3.0. Я либо получаю сообщение об ошибке из заголовка, либо меня "убивают", когда я запускаю пример opencv .

* Мой каталог файлов находится на том же уровне, что и образцы кодов. Я бы просто изменил имена файлов изображений. Я пытался скомпилировать opencv и opencv_contrib из cmake, но я не знал, как сделать так, чтобы python ссылался на opencv и opencv_contrib из исходного кода. если следовать этой документации, чтобы установить opencv из исходников; https://d* ocs.opencv.org / 3.4 / d2 / de6 / tutorial_py_setup_in_ubuntu. html

Я решил использовать оболочку anaconda для opencv 4.3.0, потому что я запускал во слишком много зависимостей и неправильно установленных пакетов.

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

1 Ответ

1 голос
/ 30 июня 2020

Ошибка «Модель не указана» возникает из-за того, что Net пуст. Вы должны фактически загрузить модель , а затем указать путь к функции 'sr.readModel ()'.

Если вы сделали это, но она по-прежнему не работает, вы можете попробовать эти две вещи:

  1. Попробуйте изображение меньшего размера (в формате .png).

  2. Соберите OpenCV из исходного кода . Не забудьте про модули contrib (здесь находится модуль dnn_superres). Вы сказали, что у вас возникла проблема со ссылкой на python. Я бы посоветовал использовать этот учебник . После выполнения этого руководства выполните следующую команду (после того, как вы уже сделали sudo make install), чтобы связать библиотеки python:

sudo ldconfig

...