Imshow opencv c не работает

Функция cv2.imshow () открывает окно, которое всегда говорит, что не отвечает — python opencv

Я пытаюсь запустить очень простую программу. Чтобы открыть и jpg файл и отобразить его с помощью библиотеки opencv для python. Изначально все работало нормально, но теперь просто открывается окно, которое не показывает изображение, но говорит «не отвечает». Мне нужно зайти в диспетчер задач и закрыть его!

5 ответов

Вы пропустили еще одну строку:

Затем в окне отображается изображение, пока вы не нажмете любую клавишу на клавиатуре. Или вы можете передать следующее:

Здесь окно показывает изображение в течение 1000 мс или 1 секунды. После этого окно само исчезнет. Но в некоторых случаях это не так. Таким образом, вы можете принудительно уничтожить его, используя cv2.destroyAllWindows ()

Ни один из ответов здесь не работал в MacOS. Следующие работы:

Просто добавьте cv2.waitKey(1) после cv2.destroyAllWindows() .

Я слишком недавно работал с opencv 3.2 и matplotlib и обнаружил (путем проб и ошибок комментирования строк), что импорт pyplot из matplotlib имеет своего рода вмешательство в функцию cv2.imshow (). Я не уверен, почему или как это действительно работает, но если кто-то ищет эту проблему и сталкивается с этим старым форумом, это может помочь. Я работаю, чтобы попытаться найти решение этой проблемы.

Если вы использовали записные книжки Python, тогда возникает проблема с использованием cv2.waitKey (0) и cv2.destroyallwindows () в системе на основе Unix для запуска программы opencv.

У меня есть альтернативный метод, который предотвратит замораживание вашего изображения

Шаги: -Скопируйте код из записных книжек Python, создайте файл filename.py и вставьте его — Открыть терминал — CD путь /к /файлу — источник активации VirtualEnvironment — python filename.py

Это будет запускать код прямо из терминала. Надеюсь, это поможет вам. Пример ссылки: https://youtu.be/8O-FW4Wm10s

Я тоже столкнулся с той же проблемой. Я запускаю командную строку Python в Centos 7 со следующим кодом

Даже тогда проблема сохранялась и не решалась. Поэтому я добавил

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

Источник

Команда cv2.imshow не работает должным образом в opencv-python

Я использую opencv 2.4.2, python 2.7 Следующий простой код создает окно с правильным именем, но его содержимое просто пустое и не показывает изображение:

кто-нибудь знает об этой проблеме?

imshow() работает только с waitKey() :

(Здесь скрыт весь цикл сообщений, необходимый для обновления окна.)

Если вы запускаете интерактивный сеанс ipython и хотите использовать окна highgui, сначала выполните cv2.startWindowThread ().

Подробно: HighGUI — это упрощенный интерфейс для отображения изображений и видео из кода OpenCV. Это должно быть так просто:

Читайте также:  Как отремонтировать триммер электрический макита

Вы должны использовать cv2.waitKey(0) после cv2.imshow(«window»,img) . Только тогда это сработает.

Если вы работаете в консоли Python, сделайте следующее:

Затем, если вы нажмете Enter на изображение, оно успешно закроет изображение, и вы сможете продолжить выполнение других команд.

Я столкнулся с той же проблемой. Я попытался прочитать изображение из IDLE и попытался отобразить его с помощью cv2.imshow() , но окно дисплея зависает и показывает, pythonw.exe что не отвечает при попытке закрыть окно.

В сообщении ниже дается возможное объяснение того, почему это происходит.

» В принципе, не делайте этого из IDLE. Напишите сценарий и запустите его из оболочки или сценарий напрямую, если он находится в Windows, назвав его с расширением .pyw и дважды щелкнув по нему. Очевидно, существует конфликт между собственным событием IDLE. цикл и те, что из наборов инструментов GUI «.

Когда я использовал imshow() сценарий и выполнял его, а не запускал его непосредственно через IDLE, он работал.

Источник

cv2.imshow command doesn’t work properly in opencv-python

I’m using opencv 2.4.2, python 2.7 The following simple code created a window of the correct name, but its content is just blank and doesn’t show the image:

does anyone knows about this issue?

19 Answers 19

imshow() only works with waitKey() :

(The whole message-loop necessary for updating the window is hidden in there.)

If you run an interactive ipython session, and want to use highgui windows, do cv2.startWindowThread() first.

In detail: HighGUI is a simplified interface to display images and video from OpenCV code. It should be as easy as:

You must use cv2.waitKey(0) after cv2.imshow(«window»,img) . Only then will it work.

If you are running inside a Python console, do this:

Then if you press Enter on the image, it will successfully close the image and you can proceed running other commands.

I faced the same issue. I tried to read an image from IDLE and tried to display it using cv2.imshow() , but the display window freezes and shows pythonw.exe is not responding when trying to close the window.

The post below gives a possible explanation for why this is happening

«Basically, don’t do this from IDLE. Write a script and run it from the shell or the script directly if in windows, by naming it with a .pyw extension and double clicking it. There is apparently a conflict between IDLE’s own event loop and the ones from GUI toolkits.«

When I used imshow() in a script and execute it rather than running it directly over IDLE, it worked.

Источник

opencv — C ++ программа зависает по команде imshow

У меня есть C ++ — код, который по какой-то причине продолжает висеть.
Это код:

Теперь я пробовал это в течение 3 дней, буквально стирая каждую строку этого кода и помещая его обратно, все сводится к следующему:

должен быть
imshow ()
что приводит к зависанию программы, так что изображение не отображается.

Странно то, что я дословно скопировал мою более старую программу, она работала, даже работала в новом проекте в течение дня, а затем ВНУТРЕННЕЕ зависла, что означает, что программа просто продолжает работать и работать без какого-либо результата и не может быть закрыта вниз.

Читайте также:  Худеем с чего начать настрой

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

Моя ОС — Ubuntu 15.10. Кроме того, я только что опробовал ответ SSteves => та же проблема.
Так что, должно быть, какая-то утечка памяти, а не мой код, верно? Как, черт возьми, вы исправляете утечки памяти?

Решение

Попробуй это. Это работает для меня и делает то, что вы описываете.

Я сделал пару небольших изменений:

  • Тест индекса цикла должен быть не если вы специально не хотите изменять последнюю строку или столбец.
  • Вы можете начать внутренний цикл с int k = j + 1 чтобы избежать ненужных итераций цикла и тому if (k > j) тестовое задание.
  • Вы устанавливаете black в трехканальное скалярное значение. Мой все еще работает, когда я изменил его Scalar(0, 0, 0) но ты все равно не должен этого делать.

Я попробовал ваш код, и он также работает. Вы не упоминаете, какую ОС вы используете. Я использую OS X.

Источник

OpenCV не работает должным образом с python в Linux с anaconda. Получение ошибки, что cv2.imshow () не реализован

Это именно та ошибка, которую я получаю. Моя ОС — Ubuntu 16.10.

Ошибка OpenCV: неопределенная ошибка (Функция не реализована. Перестройте библиотеку с поддержкой Windows, GTK + 2.x или Carbon. Если вы работаете в Ubuntu или Debian, установите libgtk2.0-dev и pkg-config, а затем повторно — запустить cmake или настроить скрипт) в cvShowImage, файл /feedstock_root/build_artefacts/work/opencv-3.1.0/modules/highgui/src/window.cpp, строка 545 Traceback (последний вызов был последним): Файл «untitled.py», строка 7, в cv2.imshow ( ‘ изображения ‘ , IMG ) cv2.error: /feedstock_root/build_artefacts/work/opencv-3.1.0/modules/highgui/src/window.cpp:545: ошибка: (-2) Функция не реализована. Перестройте библиотеку с поддержкой Windows, GTK + 2.x или Carbon. Если вы используете Ubuntu или Debian, установите libgtk2.0-dev и pkg-config, затем повторно запустите cmake или настройте скрипт в функции cvShowImage

0002.png — это изображение в том же каталоге, что и программа. Сначала я установил anaconda с python 3.5, затем установил opencv с помощью команды

Я установил libgtk2.0-dev, как и говорилось в сообщении об ошибке, но я все еще получаю ту же ошибку. Любая помощь приветствуется. Я пытался решить это в течение нескольких часов.

11 ответов

1. Самый простой способ:

Или (для OpenCV 3.1):

2. И если вы не хотите этого делать, вы можете попробовать использовать matplotlib .

3. Или попробуйте собрать библиотеку самостоятельно с помощью опции WITH_GTK=ON или чего-то подобного.

Обновление — 18 июня 2019 г.

Я получил эту ошибку в моей системе Ubuntu (18.04.1 LTS) для openCV 3.4.2, поскольку вызов метода для cv2.imshow не удался. Я использую анаконду. Только следующие 2 шага помогли мне решить:

Если вы используете pip, вы можете попробовать

Если вы в любое время установили OpenCV с помощью pip-пакета opencv-python, учтите следующее примечание, взятое из https://pypi.python.org/pypi/opencv-python

ВАЖНОЕ ПРИМЕЧАНИЕ Диски MacOS и Linux в настоящее время имеют некоторые ограничения:

  • функция, связанная с видео, не поддерживается (не скомпилировано с FFmpeg)
  • например cv2.imshow() не будет работать (не скомпилировано с поддержкой GTK + 2.x или Carbon)
Читайте также:  Не работает обдув лобового стекла тойота рав 4

Также обратите внимание, что для установки из другого источника сначала необходимо удалить пакет opencv-python

Мне приходилось сталкиваться с этой проблемой пару раз, это то, что до сих пор работало последовательно:

Для меня (Arch Linux, Anaconda с Python 3.6) установка из предложенных каналов menpo или loopbio ничего не изменила. Мое решение (см. связанный вопрос) было

  1. установить pkg-config ( sudo pacman -Syu pkg-config ),
  2. удалить opencv из среды ( conda remove opencv ) и
  3. переустановите opencv из канала conda-forge ( conda install -c conda-forge opencv )

conda list теперь возвращает opencv 3.3.0 py36_blas_openblas_203 [blas_openblas] conda-forge , и все окна, запущенные с использованием cv2, работают нормально.

Хотя на это уже ответили, для меня решение conda-forge сработало со взломом. Моя рабочая станция — машина Centos 6, и я использую виртуальную среду conda (anaconda 2). Создать среду

А затем активировать его

Теперь установите opencv из conda-forge

Теперь установите Matplotlib в этой среде (и это взломать 1)

Давайте проверим, сейчас imshow работает или нет. В терминале активируйте тестовую среду и запустите python. В переводчике делай

Это должно появиться окно с изображением. Я не стал дальше исследовать, как это решило дело.

Примечание 1 : вы можете увидеть некоторую ошибку, связанную с xkb, затем в вашем файле .bashrc добавьте

export QT_XKB_CONFIG_ROOT = / usr / share / X11 / xkb

Примечание 2 : вы можете увидеть некоторую ошибку, связанную с XDG_RUNTIME_DIR, затем в вашем файле .bashrc также добавьте

export XDG_RUNTIME_DIR = .tmp / myruntime и определить myruntime с помощью mkdir -p .tmp / myruntime

Если вы работаете в докере, вы можете получить эту ошибку. Решение деинсталлируйте текущее и установите безголовое

pip install opencv-contrib-python == 3.4.5.20

Если вы пишете на изображение и отображаете его, вам может потребоваться следующее

apt-get update && apt-get install -y libglib2.0-0 libsm6 libxext6 libxrender1

И если вам интересно, как получить дисплей от Docker, это возможно через X11 на вашем хосте

Я использовал pip для установки opencv-python . (https://pypi.org/project/opencv-python/)

1) Удалить пакет opencv из conda:

2) Добавьте в свой файл env.yml:

Удалить opencv из анаконды =

Затем установите opencv с помощью pip:

Это работает для меня.

Обратите внимание, что он жалуется на libgtk2.0-dev и pkg-config. Вот решение. Удалите существующую установку openCV.

Конда удалить opencv3

Установите эти пакеты перед установкой opencv-conda. Установите gtk2 pkg-config.

Теперь установите opencv от menpo conda install -c https://conda.anaconda.org/menpo opencv3

Я следовал этому руководству (OpenCV GTK + 2.x error) и сделал следующее. Это сработало для меня:

  1. установить пакеты: libgtk2.0-dev и pkg-config
  2. перейдите в каталог opencv
  3. Mkdir Release
  4. CD Release
  5. Запустите команду: cmake -D CMAKE_BUILD_TYPE=RELEASE -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_TBB=ON -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_V4L=ON -D INSTALL_C_EXAMPLES=ON -D INSTALL_PYTHON_EXAMPLES=ON -D BUILD_EXAMPLES=ON -D WITH_QT=ON -D WITH_GTK=ON -D WITH_OPENGL=ON ..
  6. сделать
  7. sudo make install

Моя среда — Win 10, и я добавил путь anaconda к переменным среды PATH ‘, сработал cv2.imshow

Источник

Оцените статью