OpenCV和IP Camera的连接 - 我的相机型号

时间:2011-11-17 17:17:30

标签: opencv camera ip

我买的IP Camera似乎没有品牌,但是当我通过浏览器检查它时它工作正常。 我想用它来抓住它的一些帧。在盒子上据说它允许我以mjpeg流的形式获取数据,但实际上我不能这样做。我之前用其他ip相机做过,一切正常 - 直到现在。

这是我的代码 - 如果它可以帮助您解决或告诉我。

    #include <OpenCV/cv.h>
#include <OpenCV/highgui.h>

CvCapture *kamera = NULL;
CvMemStorage *pamiec = NULL;
CvSeq *zakreslenia = NULL;

    IplImage *klatka = 0;
        IplImage *szary = 0;

char *nazwa1 = "Orginalna klatka";
char *nazwa2 = "Po zmianach";
int main()

{
    kamera = cvCaptureFromFile("http://kni:blashyrkh@83.15.3.69:80/image.jpg");kamerki w systemie
    if(kamera!=NULL)
    {
    cvNamedWindow(nazwa1,CV_WINDOW_AUTOSIZE);
    cvNamedWindow(nazwa2,CV_WINDOW_AUTOSIZE);
    pamiec = cvCreateMemStorage(0);

    while((klatka=cvQueryFrame(kamera)) != NULL)    
    {
    szary = cvCreateImage(cvGetSize(klatka),8,1);
    cvCvtColor(klatka,szary,CV_BGR2GRAY);               
    cvSmooth(szary, szary, CV_GAUSSIAN_5x5,9,9,0,0);    
    cvCanny(szary,szary,0,20,3);                    
    zakreslenia = cvHoughCircles(szary,pamiec,CV_HOUGH_GRADIENT,2,szary->height/4,100,100,0,1000);

    cvShowImage(nazwa1,klatka);
    cvShowImage(nazwa2,szary);

    if(cvWaitKey(1)==(char)27)break;

    }

    cvReleaseImage(&szary);
    cvReleaseImage(&klatka);

    cvReleaseMemStorage(&pamiec);
    cvDestroyWindow(nazwa1);
    cvDestroyWindow(nazwa2);


    cvReleaseCapture(&kamera);
    cvWaitKey(0);
    }


  return 0;//bo jestem miły dla systemu i informuję go o braku błędów

}

我不知道该怎么做 - 我应该将那个凸轮还给存储或编写自定义应用来以某种方式抓住这些框架吗?

我认为它可以与image.jpg / cachebust = 117434456&amp; a一起使用,但它不会改变任何东西

使用登录kni将相机分配给ip 83.15.3.69并传递blashyrkh,以便您可以检查它。

等你回复...

1 个答案:

答案 0 :(得分:2)

据我所知,将OpenCV与IP摄像头一起使用的可能性是一个未记录的(和意外的)功能,它只是因为ffmpeg(它的后端)支持ip rtp传输。

问题是它只适用于未加密的流(因此,如果您的相机没有密码,它应该可以工作。)当您发送密码时,它没有正确处理,并且ffmpeg没有收到预期的路径字符串。

您可以测试它尝试使用VLC进行连接。您还可以使用Wireshark检查摄像头和OpenCV之间的消息传输。 (使用ip.addr过滤== your_camera_ip)