利用ROI再一个窗口中显示多个视频

这里只显示了两个,其实还可以将这个显示多视频函数封装成一个子函数。

#include <opencv\cv.h>
#include <opencv\highgui.h>
#include <iostream>
using namespace std;
using namespace cv;

int main( int argc, char** argv ) { 
	//int i=0;
    cvNamedWindow( "Example2_9", CV_WINDOW_AUTOSIZE );
    CvCapture* capture2,* capture1;
	capture1 = cvCreateCameraCapture(2);
	capture2 = cvCreateCameraCapture(1);

	int w = 320, h = 240;
    cvSetCaptureProperty ( capture1, CV_CAP_PROP_FRAME_WIDTH,  w );  
    cvSetCaptureProperty ( capture1, CV_CAP_PROP_FRAME_HEIGHT, h );
    cvSetCaptureProperty ( capture2, CV_CAP_PROP_FRAME_WIDTH,  w );  
    cvSetCaptureProperty ( capture2, CV_CAP_PROP_FRAME_HEIGHT, h );
    IplImage* frame2,*frame1;
	frame1 = cvQueryFrame( capture1 );  
	frame2 = cvQueryFrame( capture2 );  
/*******************为了在一个窗口显示两幅图************************/
	    IplImage* frame_all = cvCreateImage(  
        cvSize(w *3,h*2),                         //设置窗口的大小便于显示多个视频,这里可显示2行3列6个视频,需要将下面的+20去掉才能显示6个
        IPL_DEPTH_8U,  
        frame1->nChannels);  
cvZero(frame_all);  
CvRect rect1=cvRect(0,0,frame1->width,frame1->height);
CvRect rect2=cvRect(frame1->width+20,0,frame1->width,frame1->height);//修改cvrect中的x,y值可以更改图像的左上角位置。这里+20是为了演示将两个视频间隔
    while(1) {                                                                                                    //如果要间隔需要将上面窗口的大小设置的>=视频大小+间隔大小
        frame2 = cvQueryFrame( capture2 );
        frame1 = cvQueryFrame( capture1 );
		if( !frame2||!frame1 ) break;			//如果程序不能读取摄像头,那么将此句删除或加个判断即采用注释掉的i语句又或者在while前读一次

cvSetImageROI( frame_all, rect1);//设置ROI
cvCopy(frame1,frame_all);//把frame1图copy进ROI
cvSetImageROI( frame_all, rect2 );//设置ROI
cvCopy(frame2,frame_all);//把frame2图copy进ROI
cvResetImageROI( frame_all);//释放ROI

		cvShowImage( "Example2_9", frame_all );
        char c = cvWaitKey(10);
        if( c == 27 ) break;
    }
    cvReleaseCapture( &capture2);
    cvReleaseCapture( &capture1 );
    cvDestroyWindow( "Example2_9" );
	return 0;
}



  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值