hello,

I'm a newbie to opencv. I'm doing a project using c++ and I use opencv for image processing. So for that I need to capture two video streams at the same time. before doing processing part I try to display both videos from cameras on two windows. But it is not working. the massage on terminal is NO SPACE LEFT ON THE DEVICE. I search on web but couldn't find any helpful thing to get this done. So if anyone knows how to do this please help me.

here is my code that how I try to do it.

#include <stdio.h>
#include "cv.h"
#include "highgui.h"
#include "iostream"
#include <pthread.h>
#include <stdlib.h>
#define NUM_THREADS     2

using namespace std;

CvCapture* capture[2];

void *side_cam(void *z){
        capture[0] = cvCreateCameraCapture(1);
        capture[1] = cvCreateCameraCapture(0);
        IplImage *img = 0;
        IplImage *img1 = 0;
        cvNamedWindow("Cam1",CV_WINDOW_AUTOSIZE);
        cvNamedWindow("Cam2",CV_WINDOW_AUTOSIZE);
        if(!capture[0] && !capture[1])
                printf("Webcam error\n");
        while(1){
                img = cvQueryFrame(capture[0]);
                img1 = cvQueryFrame(capture[1]);
                if(!img)break;
                if(!img1)break;
                cvShowImage("Cam1",img);
                cvShowImage("Cam2",img1);
                char c = cvWaitKey(33);
                if( c == 27 ) break;
        }
        cvReleaseImage(&img);
        cvDestroyWindow("Cam1");
        cvReleaseCapture(&capture[0]);
        pthread_exit(0);
}

void *bottom_cam(void *z){
        capture[1] = cvCreateCameraCapture(0);
        IplImage *img1 = 0;
        cvNamedWindow("Cam2",CV_WINDOW_AUTOSIZE);
        if(!capture[1])
                printf("Webcam error\n");
        while(1){
                img1 = cvQueryFrame(capture[2]);
                if(!img1)break;
                cvShowImage("Cam2",img1);
                char c = cvWaitKey(33);
                if( c == 27 ) break;
        }
        cvReleaseImage(&img1);
        cvDestroyWindow("Cam1");
        cvReleaseCapture(&capture[1]);
        pthread_exit(0);
}


int main()
{
        pthread_t threads[NUM_THREADS];
    int rc;int z=0;
        rc = pthread_create(&threads[0], NULL,side_cam, (void *)z);
        if (rc){
          printf("ERROR; return code from pthread_create() is %d\n", rc);
          exit(-1);
      }
        rc = pthread_create(&threads[1], NULL,bottom_cam, (void *)z);
        if (rc){
        printf("ERROR; return code from pthread_create() is %d\n", rc);
          exit(-1);
      }
        pthread_join(threads[0],NULL);
        pthread_join(threads[1],NULL);
}

thank you

This article has been dead for over six months. Start a new discussion instead.