CvCapture* cam = cvCaptureFromFile("http:\192.168.0.77");
IplImage* img;
img = cvQueryFrame(cam);
IplImage* current = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
IplImage* comResult = cvCreateImage(cvGetSize(img),IPL_DEPTH_8U,1);
double cam_w = cvGetCaptureProperty(cam, CV_CAP_PROP_FRAME_WIDTH);
double cam_h = cvGetCaptureProperty(cam, CV_CAP_PROP_FRAME_HEIGHT);
double fps = 10;
阅读文档:
CvCapture* cvCaptureFromFile(const char* filename);
初始化从文件捕获视频。函数cvCaptureFromFile()分配并初始化CvCapture结构,用于从指定文件中读取视频流。支持哪些编解码器和文件格式取决于后端库。
此函数从文件中读取!您需要将相机连接到计算机,才能从相机中检索帧。
但是,如果使用ffmpeg支持编译OpenCV,则可以从网络中的文件中读取,但必须在url中指定文件名。
请注意,在下面的代码中,文件名是在末尾指定的:
CvCapture* camera = cvCaptureFromFile("http://username:pass@cam_address/axis-cgi/mjpg/video.cgi?resolution=640x480&req_fps=30&.mjpg");
if (!camera)
{
printf("cvCaptureFromFile failedn");
exit(1);
}
始终测试OpenCV函数的返回。如果你不检查,你怎么知道函数是否成功,对吧?!
我发现这个网站有助于解决这个问题
它旨在提供一种简单的方法来解决在opencv C++(windows)中处理FFMPEG解码的问题,现在我可以使用highgui 从IP相机检索图像