linux 下用opencv 驱动多个摄像头

本文介绍了一种使用OpenCV库在C++中同时从两个摄像头捕获并显示视频流的方法。通过调用cvCaptureFromCAM函数两次,分别设置参数为-1,实现了对两个摄像头的初始化。随后,循环读取并复制帧,最后在两个窗口中显示来自不同摄像头的视频流。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 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、付费专栏及课程。

余额充值