在OpenCV 2.3.1中,我已经阅读了许多关于通过IP流式传输图像的线程,但我仍然无法使我的程序工作.
我从https://market.android.com/details?id=com.pas.webcam&hl=en下载了适用于Android的IP网络摄像头,最近学习了OpenCV以从我的Android手机摄像头中检索图像.
它的内置手册说,手机摄像头的图像可以位于http://the.phone.ip.address:8080/shot.jpg.我已经多次从浏览器打开它,它看起来总是很好.我还用FFmpeg手动构建了OpenCV支持.
到目前为止我已经尝试过了
CvCapture* webcam = cvCaptureFromFile("http://192.168.1.220:8080/shot.jpg");
Run Code Online (Sandbox Code Playgroud)
但它返回NULL并输出
[image2 @ 0xd701e0]Could not find codec parameters (Video: mjpeg, yuv420p)
Run Code Online (Sandbox Code Playgroud)
我也尝试用rtsp替换http,但它仍然不起作用.我还试图用其他图像网址(一个直接链接到谷歌图像的随机图像,一个来自localhost)替换网址,它总是杀死一个段错误.
这是我的完整资料来源
#include <stdlib.h>
#include <stdio.h>
#include <math.h>
#include <cv.h>
#include <highgui.h>
int main(int argc, char* argv[])
{
CvCapture* webcam = cvCaptureFromFile("http://192.168.1.220:8080/shot.jpg");
if(!webcam)
{
fprintf(stderr, "cannot open webcam\n");
return 1;
}
IplImage* img = cvQueryFrame(webcam);
if(!img)
{
fprintf(stderr, "cannot get image\n");
return 1;
}
cvNamedWindow("test", CV_WINDOW_AUTOSIZE);
cvShowImage("test", img); …
Run Code Online (Sandbox Code Playgroud)