#windows #opencv #video-capture
#Windows #opencv #видеосъемка
Вопрос:
У меня очень странная проблема. VideoCapture
не открывает ни веб-камеру, ни видеофайл при запуске приложения C из Visual Studio, а в случае веб-камеры выдает следующую ошибку:
Ошибка при запуске WinRT — 0xC00D36B3: «Указанный номер потока был неверным».
за которым следует
Исключение Microsoft C : _com_error в ячейке памяти 0x000000D9B66FCBB0. Исключение Microsoft C : _com_error в ячейке памяти 0x000000D9B66FCAA0. Исключение Microsoft C : cv::Exception в ячейке памяти 0x000000D9B66FEFD0. Исключение Microsoft C : cv::Exception в ячейке памяти 0x000000D9B66FEFD0.
Но когда я запускаю приложение извне VS — все работает. Я использую OpenCV версии 4.0.0
Ответ №1:
Чтобы диагностировать вашу проблему, сначала попробуйте следующее и дайте мне отзыв.
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
VideoCapture cap(0); // open the default camera
if (!cap.isOpened()) // check if we succeeded
return -1;
Mat edges;
Mat frame;
namedWindow("edges", WINDOW_NORMAL);
while (true)
{
cap >> frame; // get a new frame from camera
cvtColor(frame, edges, COLOR_RGB2GRAY);
GaussianBlur(edges, edges, Size(7, 7), 1.5, 1.5);
Canny(edges, edges, 0, 50, 3);
imshow("edges", edges);
if (waitKey(30) >= 0) break;
}
// the camera will be deinitialized automatically in VideoCapture destructor
}
Требуемые библиотеки:
opencv_core401.lib
opencv_imgproc401.lib
opencv_videoio401.lib
opencv_highgui401.lib
Комментарии:
1. Я использую предварительно созданный двоичный файл OpenCV, поэтому необходимо включить только opencv_world400.lib. Ваш код работает даже при запуске из VS. В моем проекте я использую модуль dnn, и я заметил, что — когда я исключаю из исходных текстов весь код, связанный с созданием экземпляров нейронной сети — проблема исчезает..