Я работаю над задачей, в которой мне нужно получить доступ к живому потоку IP-камеры (Edimax IC-3110P) с помощью OpenCV 3. Моя хост-система - Windows 10, и я использовал Virtualbox для запуска Ubuntu 16.04 (Xenial) 64 -немного. Я использую C ++ и Code :: Blocks (IDE).
Наконец я смог получить доступ к прямой трансляции через Microsoft Visual Studio (в Windows 10) с помощью следующей программы.
#include <stdio.h>
#include <opencv2/opencv.hpp>
#include <iostream>
int main(int, char**) {
cv::VideoCapture vcap;
cv::Mat image;
// This works on a D-Link CDS-932L
const std::string videoStreamAddress =
"http://admin:1234@192.168.2.3/mjpg/video.mjpg";
//open the video stream and make sure it's opened
if(!vcap.open(videoStreamAddress)) {
std::cout << "Error opening video stream or file" << std::endl;
return -1;
}
for(;;) {
if(!vcap.read(image)) {
std::cout << "No frame" << std::endl;
cv::waitKey();
}
cv::imshow("Output Window", image);
if(cv::waitKey(1) >= 0) break;
}
}
Однако в Ubuntu с той же программой в Code :: Blocks отображается «Ошибка загрузки потокового видео или файла».
Эта камера не поддерживает ОС Linux, но я могу получить доступ к прямой трансляции через адресную строку браузера (в Ubuntu), но не через мою программу.
Кто-нибудь знает, как решить эту проблему?
Спасибо.