OpenCV双目相机拍照及图片分割

一起搭建双目视觉系统(二) 获取视差图和相机深度 视差图 有了上篇文章获得的相机标定参数后,就可以来进行视差图的获取了。 首先利用手机拍摄,分别在左右两个方向各平行拍摄一张图片,如下图所示: 其次,本文利用opencv2库中的SteroBM算法,来获取物体的视差,关于steroBM算法的文章很多,本文就不赘述了 stereo = cv2.StereoBM_create(numDisparities=num_disp, blockSize=11) 结果如下所示: 这里的 深度的计算 这里时采用深度计算方法如下: 如果有更合适的方 阅读详情

最近在做双目相机测距及三维重建,我从tb买了一个双目相机,第一步需要通过棋盘图来对双目相机进行标定,由于双目相机拍出来的左右相机的图片是一张图,需要进行分割。

#include<iostream>
#include<string>
#include<sstream>
#include<opencv2/core.hpp>
#include<opencv2/highgui.hpp>
#include<opencv2/videoio.hpp>
#include<opencv2/opencv.hpp>
#include<stdio.h>

using namespace std;
using namespace cv;

//双目摄像头支持2560x720, 1280x480,640x240
#define FRAME_WIDTH    1280
#define FRAME_HEIGHT   480

const char* keys =
{
	"{help h usage ? | | print this message}"
	"{@video | | Video file, if not defined try to use webcamera}"
};

int main(int argc, char** argv)
{
	CommandLineParser parser(argc, argv, keys);
	parser.about("Video Capture");

	if (parser.has("help"))
	{
		parser.printMessage();
		return 0;
	}

	String videoFile = parser.get<String>(0);
	if (!parser.check())
	{
		parser.printErrors();
		return 0;
	}

	VideoCapture cap;
	if (videoFile != "")
	{
		cap.open(videoFile);
	}
	else
	{
		cap.open(1);  //0-笔记本自带摄像头,1-外接usb双目摄像头
		cap.set(CV_CAP_PROP_FRAME_WIDTH, FRAME_WIDTH);  //设置捕获视频的宽度
		cap.set(CV_CAP_PROP_FRAME_HEIGHT, FRAME_HEIGHT);  //设置捕获视频的高度
	}

	if (!cap.isOpened())
	{
		cout << "摄像头打开失败!" << endl;
		return -1;
	}

	Mat frame, frame_L, frame_R;
	
	cap >> frame;         //从相机捕获一帧

	Mat grayImage;
	
	double fScale = 1.;
	Size dsize = Size(frame.cols*fScale, frame.rows*fScale);
	Mat imagedst = Mat(dsize, CV_32S);
	resize(frame, imagedst, dsize);
	char key;
	char image_left[200];
	char image_right[200];
	int count1 = 0;
	int count2 = 0;
	int count = 0;
	namedWindow("图片1", 1);
	namedWindow("图片2", 1);

	while(1)
	{
		key = waitKey(50);
		cap >> frame;
		count++;

		resize(frame, imagedst, dsize);
		
		frame_L = imagedst(Rect(0, 0, FRAME_WIDTH/2, FRAME_HEIGHT));
		namedWindow("Video_L", 1);
		imshow("Video_L", frame_L);

		frame_R = imagedst(Rect(FRAME_WIDTH/2, 0, FRAME_WIDTH/2, FRAME_HEIGHT));
		namedWindow("Video_R", 1);
		imshow("Video_R", frame_R);
		
		if (key == 27)
			break;
		
		if (key == 32)            //使用空格键拍照
		//if (0 == (count % 100))   //每5秒定时拍照
		{
			snprintf(image_left, sizeof(image_left), "left%02d.jpg", ++count1);
			imwrite(image_left, frame_L);
			imshow("图片1", frame_L);

			snprintf(image_right, sizeof(image_right), "right%02d.jpg", ++count2);
			imwrite(image_right, frame_R);
			imshow("图片2", frame_R);
		}
		
	}

	cap.release();

	return 0;
}

CMakeLists文件如下:

cmake_minimum_required(VERSION 2.8)
project( demo )
set(OpenCV_DIR /usr/local/opencv3/share/OpenCV)
find_package( OpenCV REQUIRED )
include_directories( ${OpenCV_INCLUDE_DIRS} )
aux_source_directory(. DIR_SRCS)
add_executable(demo ${DIR_SRCS})
target_link_libraries( demo ${OpenCV_LIBS} )

编译:

cmake .
make

这样就能得到左右相机分开的照片,可根据需要用空格键拍摄或者定时拍摄,做为标定用的棋盘图一般拍摄20-30张左右。

双目相机标定图片拍摄规范 双目相机标定图片拍摄规范 文章目录双目相机标定图片拍摄规范前言一、双目相机的布置二、标定板的选用三、图片采集的规范四、进行标定的软件(选看)五、靶标布置(选看)总结 前言 相机标定是进行视觉测量和定位的基础工作之一,标定参数准确与否直接关系到整个系统的精度,标定结果将影响后续进行其他解算。笔者根据自己在双目相机项目中的标定经验,和网络上查询到的大家对标定图片采集的意见进行了总结,现分享如下: 一、双目相机的布置 (1)要保证两个相机都是水平放置的,要固定在同一基准平面上,不能让相机有翻滚角,必须保证相机 阅读详情

相关推荐

双目相机怎么选?RealSense、Mynt Eye、ZED Mini实测对比与机械臂集成指南

双目相机作为机器人感知环境的核心传感器,通过模拟人眼立体视觉原理,利用左右图像视差计算深度信息,为机械臂抓取、移动机器人导航等场景提供关键的空间数据。在实际工程中,相机的选型往往决定项目成败,而深度图质量、SDK生态、标定流程及手眼集成方式都是核心考量维度。本文基于长期实战经验,从硬件规格、深度效果、标定实操到机械臂上的eye-in-hand集成,系统对比了RealSense D435i、Mynt Eye和ZED Mini三款主流双目相机。内容涵盖弱纹理环境表现、户外强光适应性、CPU/GPU算力依赖、手眼

weixin_34112181的博客 252

【OpenCV】双目摄像头输入及左右图像分割

3种类型双目摄像头介绍,双目摄像头在OpenCV中的输入及左右图像的分割。

チン昶的博客 1万+

从零搭建机械臂视觉抓取系统:手眼标定与OpenCV实战

在机器人感知与控制领域,视觉引导是实现智能抓取与操作的核心技术。其基本原理是通过相机获取环境信息,结合计算机视觉算法识别目标物体的位置与姿态,再通过坐标转换与路径规划,引导机械臂完成精准操作。这项技术的核心价值在于赋予机器人“手眼协调”能力,是实现工业自动化分拣、精密装配及柔性制造的关键。在实际工程应用中,手眼标定是确保精度的基石,而OpenCV等开源库为快速实现图像处理与位姿估计提供了强大支持。本文以reBot Arm B601机械臂与工业相机搭建的视觉抓取Demo为例,深入剖析了从硬件选型、手眼标定到系

weixin_30596023的博客 418

图像拼接

图像拼接的基本流程 (1) 图像预处理:对原始图像进行直方图匹配、平滑滤波、增强变换等数字图像 处理的基本操作,为图像拼接的下一步作好准备。 (2) 图像配准:图像配准是整个图像拼接流程的核心,配准的精度决定了图像的拼接质量。其基本思想是:首先找到待配准图像与参考图像的模板或特征点的对应位置,然后根据对应关系建立参考图像与待配准图像之间的转换数学模型,将待配准图像

Allyli0022的专栏 3万+

AI重塑双目查看器:从立体视觉到智能感知的技术跃迁

双目视觉作为计算机视觉的重要分支,通过模拟人眼视差原理,实现对场景深度与三维结构的感知。传统立体匹配算法在弱纹理、遮挡等复杂场景下精度受限,而深度学习技术的引入,使得双目系统在特征匹配、深度估计与语义理解上获得质的提升。AI不仅增强了成像质量,更让设备具备自动识别、三维测量和智能交互能力,推动显微镜、双筒望远镜、夜视仪等传统光学产品向智能感知终端演进。从工业检测到医疗辅助,从户外观察到机器视觉,AI双目系统正在将“看得清”升级为“看得懂”。本文从行业痛点、核心技术落点、工程实现架构与验证流程出发,系统阐述A

weixin_33980459的博客 478

双目三维测距代码详解

立体校正后的左右两幅图像得到后,匹配点是在同一行上的,可以使用OpenCV中的BM算法或者SGBM算法计算视差图。立体校正利用双目标定的内外参数(焦距、成像原点、畸变系数)和双目相对位置关系(旋转矩阵和平移向量),分别对左右视图进行消除畸变和行对准,使得左右视图的成像原点坐标一致、两摄像头光轴平行、左右成像平面共面、对极线行对齐。校正前的左右相机的光心并不是平行的,两个光心的连线就叫基线,像平面与基线的交点就是极点,像点与极点所在的直线就是极线,左右极线与基线构成的平面就是空间点对应的极平面。

weixin_45303602的博客 336

使用双目摄像头左右分别拍照代码 (C++/opencv)

一、下载并打印棋盘格 在下面的网站就可以下载不同大小的棋盘格,用打印机将其打印下来 Calibration Checkerboard Collection | Mark Hedley Jones 二、准备一个双目摄像头,我实在淘宝上面买的 三、环境:C++、opencv库 ...

LYiiiiiii的博客 2387

双目三维测距(python)

本文讲解双目的工作原理,通过双目拍摄棋盘格画面,标定相机,最后实现测距

积极向上的mr.d的博客 1万+

通过pytho驱动双目相机进行拍照保存

之前一直在使用两个树莓派对应的摄像头去拼接成双目相机,最近买了一个双目小相机去玩一下,于是淘宝上买了个便宜的,二百多块钱,效果正在测试。这个相机自带了一个拍摄程序,但是拍出来的图像左右图是在一起的,还需要自己分割,索性直接用python调用相机一起拍照保存。

小张的技术分享博客 1198

双目视觉 实验图片集

双目立体视觉中使用的标准实验图,也是从网上整理的,很好,非常适合初学者进行实验使用。

统信UOS下获取root权限的两种姿势:图形化开启开发者模式 vs 命令行直接提权

本文详细解析了统信UOS下获取root权限的两种方法:通过图形界面永久开启开发者模式和使用命令行临时提权。开发者模式适合系统级开发,提供完整root权限但降低安全性;临时提权则更灵活,适合日常管理任务。文章还对比了两种方案的优缺点,帮助用户根据需求选择最佳权限管理策略。

weixin_30266885的博客 515

基于运动恢复的双目视觉三维重建系统设计与实现(二 双目相机拍照)

双目相机拍照 设备一个双目摄像头 使用双目摄像头拍照 #include <iostream> #include <chrono> #include<string> #include<sstream> #include<stdio.h> #include "opencv2/core/core.hpp" #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgpr

desian 3004

CC2340R5-OAD升级实战:从配置到调试的全流程解析

本文详细解析CC2340R5芯片的OAD(空中升级)全流程,涵盖环境配置、MCU-BOOT、OAD-BL和OAD-APP程序开发,以及内存布局和调试技巧。通过实战案例展示如何实现蓝牙设备的远程固件升级,提升开发效率和产品可维护性。

silver的专栏 1063

【双目相机】基于matlab的参数标定1-使用双目相机拍照

使用双目相机拍照用于matlab标定双目相机参数

RickyWasYoung的博客 2028

手把手教你为智能手表DIY一个离线导航:LVGL + SD卡地图实战

本文详细介绍了如何为智能手表DIY一个离线导航系统,结合LVGL图形库和SD卡地图数据。从硬件选型、地图数据处理到LVGL地图引擎实现,提供了完整的实战指南,特别适合户外运动爱好者和嵌入式开发者。文章还分享了功耗优化、性能提升等实用技巧,帮助读者打造高效的离线导航解决方案。

weixin_42570484的博客 206

find命令

命令是 Linux/Unix 系统中用于搜索文件和目录的强大工具,支持多种搜索条件组合,并能对搜索结果执行各种操作。以下是其详细说明、常用参数及示例: 搜索路径:指定起始目录(如 、 或 表示当前目录)。 查找条件:基于文件名、类型、大小、时间等属性过滤。 处理动作:对匹配结果执行操作(如打印、删除、执行命令等)。 常用参数及示例 1. 按名称查找 :区分大小写匹配文件名。 :不区分大小写匹配文件名。 2. 按文件类型查找 :指定文件类型。 文件类型: :普通文件 :目录 :符号链接

qiao2458的博客 1136

MatLab的双目相机标定和orbslam双目参数匹配

参考 双目相机标定和orbslam2双目参数详解

~勿据散客~的博客 1万+

HP DL380G9 iLO降级Degrated及存储失败storage Failed报错如何解决?

HP DL380G9 iLO降级(Degrated)及存储失败(storage Failed)报错如何处理? ©Lander Zhang 专注外企按需IT基础架构运维服务,IT Helpdesk 实战培训践行者https://blog.51cto.com/lander 2018/09/7 7:30 问题描述 某沙特公司搭建的虚拟化环境中有一台ESXi主机报Storage Fialed警告但是仍...

weixin_34226182的博客 4848

python调用相机和双目相机

python调用相机 import cv2 import numpy as np cap = cv2.VideoCapture(0) ret, frame = cap.read() while ret: ret, frame = cap.read() cv2.imshow("frame", frame) if cv2.waitKey(1) & 0xFF == ord('q'): break cv2.destroyAllWindows() cap.release

qq_46107892的博客 8216

使用循环神经网络预测温度

简介 本文以天气时间序列数据集为例,讨论如何使用深度学习模型预测未来天气温度。 使用的是由德国耶拿马克思普朗克生物地球化学研究所的气象站记录。 数据每10分钟记录一次,共记录14种不同的量,如气温、气压、湿度、风向等,原始数据可追溯到2003年,本例只使用2009-2016年的数据。 数据 下载并解压数据略。 加载数据: data_dir = r'E:\practice\tf2\temperature' fname = os.path.join(data_dir, 'jena_climate_2009_

guotianqing的博客 5282

AI编程工具深度对比:Cursor、Copilot、Trae与Claude Code,2025年开发者该如何选择?

2025年AI编程工具市场已形成四大主力阵营:Cursor(AI原生IDE)、GitHub Copilot(行业标准)、Trae(中国免费方案)和Claude Code(终端交互)。核心差异体现在技术能力(代码生成准确率85%-95%)、智能体协作程度和上下文处理能力(8K-200K tokens)。用户体验方面,Trae对中文支持最佳且免费,Copilot企业集成强,Cursor平衡易用与功能,Claude Code适合高阶开发者。实际测试显示,不同工具在原型开发、算法实现等场景各有优势

fudaihb的博客 6496

双目摄像头标定:左右镜头拍照保存

以下代码调用cv库,实现左右镜头图片拍摄并保存。

weixin_69632116的博客 691

30天Python入门(第一天:Python入门)

30天带你入门Python,这是第一天

Science prince的博客 583

Matlab标定到Python OpenCV:双目视觉测距全流程实战指南

在计算机视觉的深度感知任务中,双目视觉通过模拟人眼立体成像,利用三角测量原理计算视差,进而恢复场景距离信息,是机器人导航、辅助驾驶等工程应用的重要基础。这套流程的技术关键在于相机标定与立体校正:精准的内参、畸变系数与双相机外参,决定了后续视差计算与深度映射的有效性。随着OpenCV成为主流视觉开发库,如何将Matlab标定得到的参数准确迁移到Python环境,成为许多开发者绕不开的工程难点。本文从标定原理出发,系统梳理了标定板采集、Matlab Stereo Camera Calibrator实操、参数格式

weixin_34197488的博客 277

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

双目视觉测距实践:从Matlab标定到OpenCV视差计算完整教程

双目视觉是机器人感知与自动驾驶领域的基础技术,其核心原理是通过左右相机成像的视差计算物体深度,类似人眼判断远近的机制。要实现精准测距,完整的工程链路至关重要:相机标定用于获取内参、畸变系数及双相机相对位姿,立体校正将左右图像调整为极线平行状态,视差匹配则通过SGBM等算法生成深度信息。Matlab Camera Calibrator凭借可视化交互优势,适合离线标定;Python OpenCV则凭借丰富的API和部署便利性,承担在线推理任务。两者结合是工业界常见方案,但参数迁移涉及矩阵转置与格式转换,容易踩坑

weixin_34389926的博客 369

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

双目立体视觉系统三维重建学习总结(双目标定+图像校正(立体校正+畸变矫正)+视差图+深度图+点云重建)(完结)

视差图建立出的效果如何,比如说:所建立的视差图中是否噪声较多或者深度信息不明显(没有体现远暗近亮,物体与物体的相交处视差图没有连续光滑的变化等),一般速度快的算法,效果不太好,而速度较慢的,视差图的效果较好。------------------------------2022年11月26日更新-------------------------------------------------------------2022年11月27日更新--------------------------------

qq_45478729的博客 2295

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

上一篇: Windows下Tensorflow2 Object detection API目标检测环境搭建
下一篇: Centos7出现ModuleNotFoundError: No module named ‘tkinter‘错误
formaever
博客等级 码龄15年 1962粉丝 15原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值