linux 下用opencv 驱动多个摄像头

本文介绍了一种使用OpenCV库在C++中同时从两个摄像头捕获并显示视频流的方法。通过调用cvCaptureFromCAM函数两次,分别设置参数为-1,实现了对两个摄像头的初始化。随后,循环读取并复制帧,最后在两个窗口中显示来自不同摄像头的视频流。
摘要由CSDN通过智能技术生成
 1  #include  " cv.h "
 2  #include  " highgui.h "
 3   
 4  #include  < stdio.h >
 5  #include  < stdlib.h >
 6   
 7  #ifdef _EiC
 8  #define  WIN32
 9  #endif
12 
13  int  main(  )
14  {
15      CvCapture *  capture  =   0 ;
16      IplImage  * frame,  * frame_copy  =   0 ;
17      CvCapture *  capture2  =   0 ;
18      IplImage  * frame2,  * frame_copy2  =   0 ;
19    
20      capture  =  cvCaptureFromCAM( - 1 );
21      capture2  =  cvCaptureFromCAM( - 1 );
22 
23   
24      if ( capture)
25 
26      {
27           for (;;)
28          {
29               if ! cvGrabFrame( capture ))
30                   break ;
31              frame  =  cvRetrieveFrame( capture );
32               if ! frame )
33                   break ;
34               if ! frame_copy )
35                  frame_copy  =  cvCreateImage( cvSize(frame -> width,frame -> height),
36                                              IPL_DEPTH_8U, frame -> nChannels );
37               if ( frame -> origin  ==  IPL_ORIGIN_TL )
38                  cvCopy( frame, frame_copy,  0  );
39               else
40                  cvFlip( frame, frame_copy,  0  );
41   
42                cvNamedWindow( " cam " , 1 );
43         cvShowImage( " cam " ,frame_copy);
44 
45 
46 
47 
48               if ! cvGrabFrame( capture2 ))
49                   break ;
50              frame2  =  cvRetrieveFrame( capture2 );
51               if ! frame2 )
52                   break ;
53               if ! frame_copy2 )
54                  frame_copy2  =  cvCreateImage( cvSize(frame2 -> width,frame2 -> height),
55                                              IPL_DEPTH_8U, frame2 -> nChannels );
56               if ( frame2 -> origin  ==  IPL_ORIGIN_TL )
57                  cvCopy( frame2, frame_copy2,  0  );
58               else
59                  cvFlip( frame2, frame_copy2,  0  );
60   
61                cvNamedWindow( " cam2 " , 1 );
62         cvShowImage( " cam2 " ,frame_copy2);
63   
64               if ( cvWaitKey(  10  )  >=   0  )
65                   break ;
66 
67          }
68   
69          cvReleaseImage(  & frame_copy );
70          cvReleaseCapture(  & capture );
71          cvReleaseImage(  & frame_copy2 );
72          cvReleaseCapture(  & capture2 );
73      }
74 
75 
76  }

 通过多次的调用cvCaptureFromCAM来实现驱动多个摄像头。

转载于:https://www.cnblogs.com/zhangzhi/archive/2009/10/26/1590155.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值