利用opencv做分屏显示

 

opencv时间不长,但又比较喜欢玩,看以前电视上会有那种一个屏幕上显示多幅图像的玩意,感觉很好玩,比较好奇,自己利用opencv做了一个简单的分屏显示的小程序

其实很简单,就是对数据结构进行的操作,说到底就是对指针的操作,利用cvGetCols函数分别将两幅图像的数据分别放到自己创建的一个CvMat数据矩阵中,这样就可以在一个窗口中将两幅图像le

 

下面是具体的程序实现,程序很简单,对于高手来说可能比较幼稚,千万别喷我啊

 

CvCapture *capture1 = 0;
 CvCapture *capture2 = 0;
 IplImage  *image1 = 0;
 IplImage  *image2 = 0;
 CvMat *M_image1;
 CvMat *M_image2;
 CvMat part;

 cvNamedWindow("woaini,haiyingyang" , 1);

 for(; ;)
 {
  capture1 = cvCaptureFromCAM(0);
  if(!capture1)
   printf("capture1 failed/n");
  capture2 = cvCaptureFromCAM(1);
  if(!capture2)
   printf("capture2 failed/n");
  image1 = cvQueryFrame(capture1);
   if(!image1)
    printf("query image1 failed/n");
  image2 = cvQueryFrame(capture2);
  if(!image2)
   printf("query image2 failed/n");
  M_image1 = cvCreateMat(image1->height  , image1->width  , CV_8UC3);
        M_image2 = cvCreateMat(image1->height  , image1->width  , CV_8UC3);
  cvConvert(image1 , M_image1);
  cvConvert(image2 , M_image2);
  CvMat *pair = cvCreateMat(image1->height , image1->width*2 , CV_8UC3);
  cvGetCols(pair , &part , 0 , image1->width);
  cvCopy(M_image1 , &part);
  cvGetCols(pair , &part , image1->width , image1->width*2);
  cvCopy(M_image2 , &part);
  cvShowImage("woaini,haiyingyang" , pair);
 
  if(cvWaitKey(10) >=  0)
   break;
}
 cvDestroyWindow("woaini,haiyingyang");
 cvReleaseCapture(&capture1);
    cvReleaseCapture(&capture2);
 cvReleaseImage(&image1);
 cvReleaseImage(&image2);
 return 0;


 

 效果图:

 

你可能感兴趣的:(机器视觉)