openCV gstreamer_videoio завершилась ошибкой / возникла ошибка winrt "Указан неверный номер потока" - PullRequest
0 голосов
/ 29 февраля 2020

Я пытаюсь создать упрощенный код распознавания и обработки изображений i-1015 * в openCV 4.20 и c ++ в VS19. Проблема в том, что она работала нормально до неопределенного момента , а затем внезапно я перестал видеть какой-либо вывод изображения вообще в windows, который создает openCV. Он должен снимать изображение с веб-камеры и выполнять всю обработку, но теперь все, что он показывает, это пустое окно, как будто изображения вообще нет. Тем не менее, он проходит проверку на ошибки и всю обработку, а выходные данные кадровой регистрации все проходят как успешные (например, снятое изображение, выполненная обработка и т. Д. c). Дело в том, что захват камеры определенно работает, так как я вижу изменения FPS в частоте вывода журналов с изменением частоты кадров в секунду (когда я помещаю камеру в источник света, частота кадров увеличивается и поэтому "frame" захваченное "сообщение пишется чаще.). Когда я проверяю вывод init в консоли, я вижу следующие сообщения:

[ INFO:0] global C:\build\master_winpack-build-win64-vc15\opencv\modules\videoio\src\videoio_registry.cpp (187) cv::`anonymous-namespace'::VideoBackendRegistry::VideoBackendRegistry VIDEOIO: Enabled backends(7, sorted by priority): FFMPEG(1000); GSTREAMER(990); INTEL_MFX(980); MSMF(970); DSHOW(960); CV_IMAGES(950); CV_MJPEG(940)
[ INFO:0] global C:\build\master_winpack-build-win64-vc15\opencv\modules\videoio\src\backend_plugin.cpp (353) cv::impl::getPluginCandidates Found 2 plugin(s) for GSTREAMER
[ INFO:0] global C:\build\master_winpack-build-win64-vc15\opencv\modules\videoio\src\backend_plugin.cpp (172) cv::impl::DynamicLib::libraryLoad load C:\opencv\build\x64\vc15\bin\opencv_videoio_gstreamer420_64.dll => FAILED
[ INFO:0] global C:\build\master_winpack-build-win64-vc15\opencv\modules\videoio\src\backend_plugin.cpp (172) cv::impl::DynamicLib::libraryLoad load opencv_videoio_gstreamer420_64.dll => FAILED

в консоли отладки visual studio, также есть одна строка ошибки среди строк загрузки модуля:

Exception thrown at 0x00007FFD4F37A839 (KernelBase.dll) in oCVCookies.exe: WinRT originate error - 0xC00D36B3 : 'The stream number provided was invalid.'.

из того, что я могу сказать, он пытается использовать VIDEOIO_GSTREAMER420_64.dll, но в папке oCV такой библиотеки нет. Но как-то раньше это работало. И это не относится к самому коду, так как когда я создаю фиктивный код, который ТОЛЬКО открывает захват, захватывает фрейм и показывает его, я сталкиваюсь с той же проблемой. Опять же, он работал до определенного момента , но он просто перестал работать после неизвестного события. Переустановка OpenCV не помогла с проблемой. Фиктивный код, который я использовал, был примерно таким:

Mat camframe;
VideoCapture cap;
cap.open (CAP_ANY, 0);
while (;;)
{
cap.read(camframe);
imshow("feed", camframe);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...