Всех приветствую.проблема такая: есть ип камера. нужно получить с нее картинку,а точнее видео. подскажите как это лучше реализовать. самостоятельный поиск мало помог.
нашел несколько решений.
1. через регистрацию камеры в сис
int KamIndex,c,x,y;
c = lineEdit->text().toInt();
c = indexBox->text().toInt();
x=x_coordinate->text().toInt();
y=y_coordinate->text().toInt();
KamIndex=c;
//#####################------------------просто доступ к камере
// задаём высоту и ширину картинки
// получаем любую подключённую камеру
//CVAPI(CvCapture*) cvCreateCameraCapture( int index );
//CVAPI(int) cvSaveImage( const char* filename, const CvArr* image, const int* params CV_DEFAULT(0) );
//номер камеры в системе(number of cameras in the system)
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
CvCapture* capture = cvCaptureFromCAM( KamIndex );
//cvCreateCameraCapture(CV_CAP_ANY);//
//@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
if(capture == NULL)
// Если камер не обнаружено
proverka();
assert( capture );
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH, x);//1280);
cvSetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT,y);//960);
// узнаем ширину и высоту кадра
// double width = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_WIDTH);
// double height = cvGetCaptureProperty(capture, CV_CAP_PROP_FRAME_HEIGHT);
//printf("[i] %.0f x %.0f\n", width, height );
IplImage* frame=0;
cvNamedWindow("capture", CV_WINDOW_AUTOSIZE);
printf("[i] press Enter for capture image and Esc for quit!\n\n");
int counter=0;
char filename[512];
while(true){
// получаем кадр
frame = cvQueryFrame( capture );
// показываем
cvShowImage("capture", frame);
char c = cvWaitKey(33);
if (c == 27) { // нажата ESC
break;
}
else if(c == 13) { // Enter
// сохраняем кадр в файл
sprintf(filename, "Image%d.jpg", counter);
printf("[i] capture... %s\n", filename);
cvSaveImage(filename, frame);
counter++;
}
}
// освобождаем ресурсы
cvReleaseCapture( &capture );
cvDestroyWindow("capture");
не подходит т.к. для регистрации нужны админские права, что в данной ситуации не подходит
2.должен напрямую по ип подключаться
{using namespace std; using namespace cv;
VideoCapture vid("http://admin:admin123@192.168.0.20/video/mjpg.cgi?&.mjpg");//("http://192.168.0.20:80/videostream.cgi?user=admin&pwd=admin123&resolution=32");//; //169.254.214.34 change this URL according to your camera
if (!vid.isOpened())
{
cout << "could not capture";
//break;
}
Mat frame;
// IplImage *frame=0;
cvNamedWindow("IPcamera");
char key = 'a';
while(true)
{
vid.grab();
vid.retrieve(frame);
imshow("IPcamera", frame);
key = waitKey(10);
}
destroyAllWindows();
при выполнении критует. может где ошибка?
подскажите как можно еще получить видео с ип камеры
пользую qt 4.8 b opencv