OpenCV и соединение с IP Camera - моя модель камеры - PullRequest
1 голос
/ 17 ноября 2011

Я купил IP-камеру, на которой, похоже, нет марки, но она отлично работает, когда я проверяю ее через браузер.Я хочу использовать его, чтобы получить от него некоторые кадры.На коробке сказано, что она позволяет мне получать данные в виде потока 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

}

I 'Понятия не имею, что делать - я должен вернуть эту камеру для хранения или написать собственное приложение для захвата кадров?

Я думал, что оно может работать с image.jpg / cachebust = 117434456 & a, но этоничего не меняет

Камера назначена на ip 83.15.3.69 с логином kni и пропуском blashyrkh, так что вы можете проверить это.

Ожидание вашего ответа ...

1 Ответ

2 голосов
/ 17 ноября 2011

Как я знаю, возможность использовать OpenCV с IP-камерами - недокументированная (и неожиданная) функция, и она работает только потому, что ffmpeg (его бэкэнд) поддерживает передачу ip rtp.

Проблема в том, что онаработает только с незашифрованными потоками (поэтому, если ваша камера не имеет пароля, она должна работать.) Когда вы отправляете пароль, он обрабатывается неправильно, и ffmpeg не получает ожидаемую строку пути.

Вы можете проверить это, пытаясь соединиться, используя VLC.И вы также можете использовать Wireshark для проверки передачи сообщений между камерой и OpenCV.(фильтр с ip.addr == your_camera_ip)

...