【OpenCV】双目摄像头输入及左右图像分割
目录
- 双目摄像头
- 双目摄像头输入
- 左右图像分割
双目摄像头
博主打算做双目测距的实验,因此需要用到双目摄像头。使用过下述几种类型的双目摄像头:
1.集成两个摄像头的模组(单个USB插口,左右图像单独输出)
这类摄像头插入后会显示两个摄像头输入,但可能是由于共用同一个USB传输的原因,有时候同时打开两个摄像头后,另外一个摄像头的画面会显示不出来。
如果要同时输入两个单独的摄像头,最好是使用不同型号的摄像头。
2.两个相同的单目摄像头(两个USB插口,左右图像单独输出)
两个单独的摄像头分别通过各自的USB输入就不会出现上述问题,但是两摄像头的同步性可能不是很好(对于普通实验其实影响不大),且博主之后打算做多目的实验,USB接口有限(使用hub同样会出现上述的问题),所以经过一段时间的使用之后,最后是选择使用下一种类型的双目摄像头。
3.集成两个摄像头的模组(两个USB插口,左右图像合成输出)
这类摄像头和第一类的区别在于左右图像在模组中已经进行了拼接合成,最后传输出来的是单张合成的图像,在串口中也只是显示一个摄像头。例如,博主购买的这款单个摄像头输出1280x960的图像,通过合成后USB输出2560x960的合成图像。这类摄像头解决了上述两种双目摄像头的缺点,但是图像在opencv中处理时,需要事先进行图像分割。
双目摄像头输入
对于第一和第二类双目摄像头,在程序中都需要单独输入两个摄像头图像。
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>using namespace cv;int main()
{VideoCapture cap1(0),cap2(1);//define two capture for two cameraswhile (1){Mat frame1, frame2;cap1 >> frame1;cap2 >> frame2;imshow("leftImage", frame1);//left imageimshow("rightImage", frame2);//right imagewaitKey(33);}return 0;
}
ps:使用VideoCapture
类定义时,括号内数字为摄像头串口的编号,通常是0,1,-1,2,第二个摄像头可能需要多试几下。
左右图像分割
对于第三类摄像头,串口输入的是左右摄像头拼接合成后的图像,在opencv中进行图像处理之前,应将合成图像分割成左右两张图像。
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>using namespace cv;int main()
{VideoCapture cap(0);while (1){Mat frame;cap >> frame;resize(frame, frame, Size(1280, 480));//set size of imageMat leftImage, rightImage;leftImage = frame(Rect(0, 0, frame.size().width / 2, frame.size().height));//split left imagerightImage = frame(Rect(frame.size().width / 2, 0, frame.size().width / 2, frame.size().height));//split right imageimshow("leftImage", leftImage);//left imageimshow("rightImage", rightImage);//right imagewaitKey(33);}return 0;
}
ps: 1.源图像使用resize()
调整图像大小,需要包含imgproc.hpp
头文件。
2.Rect(x,y,width,height)
四个参数分别是起点横坐标、起点纵坐标、宽度和高度,早期使用容易犯错认为后两个参数是终点横纵坐标。
源图像:
分割后图像:
第一次写博客,如有错误,欢迎指正!
【OpenCV】双目摄像头输入及左右图像分割相关推荐
- opencv 双目摄像头标定
我用的是opencv官方的例程,花了一天把代码大致注释了下,但是双目感觉好难,很多地方都不懂,都是在大佬们的博客找的资料 下面是对例程使用的说明 http://blog.csdn.net/t24755 ...
- opencv 双目摄像头拍照(分别左右镜头拍照)
准备一个usb线的双目同步摄像头: 运行环境是vc2015,opencv3.1. 将左右两个摄像头拍到的图片分别保存起来. 1)适用条件 双目同步摄像头(两个镜头,共用一个设备ID) 使用语言:C++ ...
- OpenCV 打开双目摄像头(python版)
前言 本文主要介绍在OpenCV用使用双目摄像头,包括:打开单目摄像头.设置摄像头参数.拍照.录制视频. 环境:编程语言:Python3 主要依赖库:OpenCV3.x 或 OpenCV ...
- Python+OpenCV+pyQt5录制双目摄像头视频
#Python+OpenCV+pyQt5录制双目摄像头视频 ##起因 说起来录制视频,我们可能有很多的软件,但是比较坑的是,好像很少的软件支持能够同时录制两个摄像头的视频,于是我们用python自己写 ...
- Android OpenCV使用4_双目摄像头双开两个预览界面,并获取当前帧图片
本篇博客其实跟OpenCV也没什么多大关系,因为是同一个项目,博客就顺溜着写了. 在自研设备开发过程中,在项目研发过程中碰到了双目摄像头双开(一个普通摄像头,一个红外摄像头)并获取当前帧的这么一个需求 ...
- opencv python打开双目摄像头
在python下使用opencv打开摄像头的函数为:cv2.VideoCapture(index) #index为摄像头标号 默认情况电脑自带摄像头索引为0,外置为1.2.3-,但是我的没有自带摄像头 ...
- opencv打开双目摄像头
最近朋友请教了我一些双目摄像头的问题,小编在这里经过查阅资料给出一段程序,,有人说用directshow来实现,有人说直接可以用opencv读取多个摄像头.那么,既然opencv能实现,为什么还要装其 ...
- 使用opencv标定双目摄像头
在https://blog.csdn.net/weixin_39266208/article/details/120917840中,制作了一个9x12的棋盘图片,打印到A4纸上,每个格子长度22mm, ...
- 双目测距代码 python opencv 利用双目摄像头拍照,测距
环境:ubuntu14.04 软件:opencv3.3 +pycharm 好久没有写博客了,手都感觉好生疏,最近一直在研究工控机,水下机器人等,好不容易闲下来,没办法呀,继续前行吧,前面一直说双目测距 ...
最新文章
- 字节跳动凌晨发半个月奖金,网友:我酸了,又是别人家的公司!
- Spring中bean的scope详解
- java jar包和war包_java中jar包和war包之间有什么区别
- 赶快卸载!微软新公布了18个流氓浏览器插件!
- 03 jquery easyui 之 easyLoader 加载器
- [COCI 2018#5]Parametriziran
- 哈希桶 entry_哈希表代码实现
- 数据库:MySQL和MariaDB的JDBC连接
- 教育|施一公:研究生最重要的素质是什么?
- android 自定义课程表,Android课程表界面布局实现代码
- 防火墙dhcp服务器性能,F100-A-G 防火墙当做DHCP服务器,下接E528交换机,能不能划分多个VLAN?...
- 最省钱的方式搭建电子商务网站
- linux服务端修改EDT为东八区,EDT开发环境配置
- RT-Thread 4.0 + STM32F407 学习笔记1
- Python实现RFM模型
- ArcGis CityEngine 下载地址
- 最新PYTHON批量下载快手个人主页短视频代码
- word 导出编辑ftl_word文档转化成ftl文件
- B46 - STM32太阳能充电智能心率监测骑行仪
- 探索深海生态系统和冰卫星的协同作用-深海机器人开发与空间技术合作