基于openCV和ZED的测距
代码下载:https://download.csdn.net/download/weixin_40476456/10782808

第一次写博客,写的不好请见谅。
配置opencv和zed sdk的教程很多,这里就不说了。
开发环境:visual studio 2017
实现的功能很简单,就是鼠标选取目标,得到左摄像头和目标的距离,代码也很简单,反正就是这么简单的实现了,不得不说zed相机真的太强大了,等我的TX2到了,一定很好玩。
主要代码:
1.设置参数:

sl::InitParameters param;param.camera_fps = 30;param.depth_mode = sl::DEPTH_MODE_PERFORMANCE;//PERFORMANCE适合近距离测距,超出5米请用ULTRA模式,当然电脑要带得动。param.coordinate_units = sl::UNIT_METER;//单位:米

2.获取数据

zed.grab();
zed.retrieveImage(img_zed, VIEW_LEFT);//左边相机图像
img_cv = cv::Mat(img_zed.getHeight(), img_zed.getWidth(), CV_8UC4, img_zed.getPtr<sl::uchar1>(MEM_CPU));
zed.retrieveImage(img_zed_depth, VIEW_DEPTH);//深度矩阵存储32位浮点值,其表示每个(X,Y)像素的深度(Z)//默认情况下,深度值以毫米表示。可以使用更改单位InitParameters::coordinate_units。高级用户可以使用CPU内存(默认)或GPU内存中的图像,深度和点云检索retrieveMeasure(*, *, MEM_GPU)。
img_cv_depth = cv::Mat(img_zed_depth.getHeight(), img_zed_depth.getWidth(), CV_8UC4, img_zed_depth.getPtr<sl::uchar1>(MEM_CPU));
zed.retrieveMeasure(Point_3D, MEASURE_XYZRGBA);//选择从 CPU中 获得数据
cv::putText(img_cv,text,cv::Point(20, 30),cv::FONT_HERSHEY_SIMPLEX,0.5,cv::Scalar(0, 255, 0));//将距离显示在图像上
cv::circle(img_cv, mouse_point, 10, cv::Scalar(255, 0, 0),3);
cv::imshow("img_cv", img_cv);
//cv::imshow("depth", img_cv_depth);
cv::waitKey(30);

3.鼠标选取目标操作

sl::float4 point3D;//点云图数据//点云将其数据存储在4个通道上,每个通道使用32位浮点数。//最后一个浮点数用于存储颜色信息,其中R,G,B和alpha通道(4 x 8位)连接成一个32位浮点数
switch (EVENT) {case cv::EVENT_LBUTTONDOWN: {img_zed_depth.getValue(x, y, &point3D);Point_3D.getValue(x, y, &point3D);//float _x = point3D.x;//float _y = point3D.y;//float _z = point3D.z;//float color = point3D.w;float distance= sqrt(point3D.x*point3D.x + point3D.y*point3D.y + point3D.z*point3D.z);text = "distance: " + std::to_string(distance) + " m";}break;default:break;}

效果如下:
测了几次,误差在5%以内,用ULTRA模式获得的图像最好,最准确,但对电脑的要求也高。

基于openCV和ZED的测距相关推荐

  1. 基于OPENCV的单目测距

    最近研究了一下单目测距,关于单目测距的原理有各位大神的讲解,这里只写一些自已使用上的记录,使用环境为windows10+opencv3.1+vs2015. 买了一个摄像头(笔记本的定焦摄像头也可以), ...

  2. 基于OpenCV的单目摄像机测距

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 我的论文方向目前是使用单目摄像头实现机器人对人 ...

  3. 【opencv学习】完全基于opencv的双目景深与测距的实现

    目录 目录 说明 双目测距原理 opencv实现双目测距的原理 双目测距代码说明 双目测距的代码和实现 接下来 1 说明 怕以后忘了,现在总结一下前一段时间一直在弄的,有关双目视觉的东西. 双目视觉的 ...

  4. 基于OpenCV的摄像头测距(2022-1-1)

    基于OpenCV的摄像头测距 前言 去年暑假参加了一个比赛,比赛内容中需要确定目标的位置 本来想全用图像完成的,最后发现不是很符合要求.比完赛之后,就忙别的事了.直到现在突然想试试摄像头测距.就来了 ...

  5. 学习OpenCV(4) 基于OpenCV的双目测距程序

    用MFC和OpenCV编写的双目测距程序,编写过程中参考了很多前人的经验,期间很多博主给我提供了源码或者问题解答,所以我想把我的经验写出来分享给大家,也许并没有什么使用价值,但是可以作为类似的项目的参 ...

  6. 基于OpenCV的单目相机标定与三维定位

    相机是产生图像数据的硬件,广泛应用于消费电子.汽车.安防等领域.围绕着相机衍生出一系列的研究与应用领域,包括传统的图像处理和基于深度学习的智能应用等.目前大火的自动驾驶中相机也是重要的硬件组成,如环视 ...

  7. 基于Opencv的车距检测系统(源码&教程)

    1.研究背景 对本车前方车辆的识别及距离检测是计算机视觉技术在智能网联汽车中的一个重要内容.要想在错综繁杂的交通环境中实现无人驾驶,对行车环境中其他车辆信息的获取是十分重要的.因此,对本车前方车辆的识 ...

  8. 双目测距python_基于OpenCV3.2+VS2013双目测距

    基于 OpenCV3.2+VS2013 双目测距 1 .摄像头标定 1.1 .通查询资料和博客大概有两种方式 : ( 1 )利用 OpenCV 自带的校正程序 ( 2 )利用 MATLAB 工具来标定 ...

  9. 双目视觉焦距_一种基于可变焦相机的双目视觉测距方法与流程

    本发明属于双目视觉技术领域,具体涉及一种基于可变焦相机的双目视觉测距方法. 背景技术: 在这个计算机视觉技术发展迅速的时代,获取深度信息成为了一个热门的课题,因其所诞生的方法也各式各样,但是绝大部分的 ...

最新文章

  1. MATLAB【五】———— matlab 调用C++生成exe文件,高斯核函数
  2. 00后MIT美女学霸获2022年罗德奖学金!4位中国学霸入学牛津
  3. C#操作XML总结1
  4. Vector用法(C++ Primer中文版)
  5. 微软开源的Trill是什么?
  6. 选择标签至文本域效果,可多选/可过滤重复/可限制个数
  7. 使用AXI Verifcation IP进行系统验证
  8. 删除Nouveau 安装 NVIDIA 最新驱动 ubuntu18
  9. matlab fread每隔,matlab 中关于fread函数的用法
  10. unity3D 插件plugins
  11. 利用sql循环语句实现基本的数据累加和阶乘
  12. 我在富士康挨踢了七年(十三.悉尼工作篇 )
  13. 3500 vocabulary
  14. “鬼城”郑州郑东新区蝶变记,助力中部崛起
  15. 如何使用Google的Draco项目
  16. github snap android,轻量级的viewpager指示器
  17. 四级单词pdf_英语单词里的字母到底有没有含义?
  18. 2019年终总结——我度过了幸福的一年
  19. Access时间日期比较查询的方法
  20. 仅仅因为方法 Too Simple 就被拒稿,合理吗?

热门文章

  1. Linux协议栈--NAPI机制
  2. paddle.fluid.io.xmap_readers
  3. php.ini修改需要重启什么
  4. html 卡片布局 怎么,卡片式格局(CardLayout)
  5. mysql数据库中查看数据库当前连接数
  6. 如何PC机上搭建 中标麒麟系统+达梦数据库的开发环境
  7. MATLAB算法实战应用案例精讲-【智能优化算法】强度帕累托进化算法 2 (SPEA2)(附MATLAB代码实现)
  8. unity3D 音频播放
  9. 201771010137赵栋《第八周学习总结》
  10. #flutter#fluter介绍