opencv摄像头获取连续图像(二): 双目获取图像

原则上获取双目只是单目的程序叠加,但需要注意的是,有时获取外部usb摄像头,需要将cap.set(CV_CAP_PROP_FPS, 30.0)注释掉


#include <iostream>  
#include <opencv2/opencv.hpp>  
  
using namespace std;  
using namespace cv;  
  
int main()  
{  
    VideoCapture cap1(1);//开启外接摄像头,顺序要从大到小  
    VideoCapture cap0(0);
    if (cap1.isOpened() && cap0.isOpened())  
      cout << "camera is opened"<< endl;  
    else   
      cout << "camera is not opened" << endl;  
      
  
    bool stop = false;  
    Mat frame;  
  
      
    //设置摄像头分辨率640*480 帧率30fps  
    cap0.set(CV_CAP_PROP_FRAME_HEIGHT, 480);  
    cap0.set(CV_CAP_PROP_FRAME_WIDTH, 640);
	cap1.set(CV_CAP_PROP_FRAME_HEIGHT, 480);  
    cap1.set(CV_CAP_PROP_FRAME_WIDTH, 640);
    //cap.set(CV_CAP_PROP_FPS, 30.0); //在连接有些外部usb摄像头时需要将此句注释掉

  
    //保存视频格式为avi, 编码为MJPG  
    VideoWriter writer0("two_test0.avi",CV_FOURCC('M', 'J', 'P', 'G'),30, Size(640,480),true);  
    VideoWriter writer1("two_test1.avi",CV_FOURCC('M', 'J', 'P', 'G'),30, Size(640,480),true);
    //通过总帧数控制拍摄时间,如果为5s的视频,循环5*30次;  
    Mat videoPlay0,videoPlay1; 
    int count = 150;  
    //namedWindow("videoplay", WINDOW_NORMAL);  
	namedWindow("videoplay0", WINDOW_AUTOSIZE); 
	namedWindow("videoplay1", WINDOW_AUTOSIZE); 
    while (count)  
    {  
        //cap >> videoPlay;  
        //writer << videoPlay; 
		 cap0 >> videoPlay0;  //
                              
        if(!cap0.read(videoPlay0))  // 读取下一帧图像 
                 break; 
        writer0 << videoPlay0;
        imshow("videoplay0", videoPlay0); 

		 cap1 >> videoPlay1;  
        if(!cap1.read(videoPlay1))  // 读取下一帧图像 
                 break; 
        writer1 << videoPlay1;
        imshow("videoplay1", videoPlay1); 
        waitKey(30);  
        count --;  
    }  


   //读取获取到的视频,进行图像采集
    VideoCapture cap00("two_test0.avi"); 
    VideoCapture cap11("two_test1.avi"); 
    if(cap00.isOpened() && cap11.isOpened())  
        cout << "ok ,have a video" << endl;  
    else 
        cout << "no video" << endl;


    Mat frame00,frame11;
    int num0 = 1, num1 = 1;
    string filename0;  
    char temp_file0[5];  
    string path0 = "C:\\Users\\Administrator\\Desktop\\pic_save\\parral_x";//can change the path  
    for (int i = 1; ;i++)  
    {  
        cap00 >> frame00;  
        if(frame00.empty())  
            break;  
        if(i % 5 == 0)  
        {  
           _itoa_s(num0, temp_file0, 4, 10);  
           filename0 = temp_file0;  
           filename0 = path0 + filename0 + ".jpg";  
           num0 ++; 
           imwrite (filename0,frame00);  
        }  
       }  
    cap00.release(); 

    //重复上一步骤
    string filename1;  
    char temp_file1[5];  
    string path1 = "C:\\Users\\Administrator\\Desktop\\pic_save\\parral_y";//can change the path  
    for (int i = 1; ;i++)  
    {  
        cap11 >> frame11;  
        if(frame11.empty())  
            break;  
        if(i % 5 == 0)  
        {  
           _itoa_s(num1, temp_file1, 4, 10);  
           filename1 = temp_file1;  
           filename1 = path1 + filename1 + ".jpg";  
           num1 ++;  
          imwrite (filename1,frame11);  
        }  
       }  
    cap11.release(); 
  
    //system("pause");  
  
    return 0;  
  
}  


  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
在视频监控应用中,如何有效实现宽视场范围视频的完整获取,是视频监控系统的关键功能之一。本文针对多摄像头硬件平台,重点研究 360 度全景视频拼接的实现技术。在保证高质量的拼接图像的前提下,满足实际应用场景的实时性要求是本文算法设计的主要目标。针对全景拼接在视频监控领域这一应用背景,本文对多摄像头系统全景拼接存在的一些优势和约束进行详细分析,并在此基础上,采用多个广角镜头进行视频图像采集,实现摄像头个数和单个镜头视角之间的合理折中。在控制成本的前提下,有效实现水平方向 360 度无盲区监控。 针对全景视频拼接算法的实时性能和拼接效果,本文重点在以下几个方面开展了研究工作: 1、本文采用普通的监控 CCD 单板机和广角镜头组装摄像单元,对多个摄像单元通道采用多线程同步视频采集。针对普通监控镜头采集图像质量不高的问题,提出基于颜色校正板的颜色校正方法,对输入图像进行预处理,有效改善图像质量。并采用基于灰度均值的方法,对相邻图像的重叠区域进行亮度调整。 2、本文基于经典的直线标定法思想,提出两步法镜头矫正方案。通过所提出的直线标定法对镜头进行一次矫正,然后通过手动设置并调节畸变参数,对矫正后的图像进行次矫正,所提出的算法能保证良好的镜头矫正效果。 3、研究了柱面投影模型的原理,提出将柱面映射的投影中心修正为镜头畸变中心,克服了由于畸变和透视失真等因素造成的重叠区物体成像尺寸不一致的问题。然后,利用所提出的坐标映射表的方式,一次性实现镜头畸变矫正和柱面映射,有效提高了算法执行速度。 4、分析了基于 Harris 特征和 SIFT 特征的配准算法原理。SIFT 特征配准算法鲁棒性高,但难以满足硬件系统的实时性要求;基于 Harris 特征的配准算法复杂度低,但难以应对广角镜头畸变引起的图像质量差的问题,匹配性能较差。最后采用了基于积分图像的快速归一化互相关配准方案,实验验证了算法的可行性和有效性。 5、此外,在图像融合方面,基于经典的多频带融合算法,结合线性融合的思想,优化了一种简单的多分辨率线性融合方法。在保证融合质量的基础上,提升了速度。 关键字:多镜头多传感器;图像配准;全景拼接;实时监控;广角镜头
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值