前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >DonkeyCar源码阅读.3(操作记录+若干图像处理)

DonkeyCar源码阅读.3(操作记录+若干图像处理)

作者头像
云深无际
发布2022-06-15 15:57:12
3430
发布2022-06-15 15:57:12
举报
文章被收录于专栏:云深之无迹

驴车的源码分析第三弹,今天事情比较多,趁着早上有空赶紧更了。

先回答一些疑问:

这里是两个相机,但是不是立体,只是合成了新图像

路径如图

这里是就是证据,前面的来源是webcam,后面的来源是OpenCV的捕捉。

这个是CvCam的类,以及有的函数。

默认是0索引的相机

为了取得好的图片效果,需要设置摄像头的参数。

假如摄像流为 cap, 那么设置参数是cap.set(参数编号,参数)

获取参数值的函数是 cap.get(参数编号)

下面是读取一帧的封装,在相机可用的前提下,读取,存在frame内。

持续读帧的代码,使用while循环,running来自于:

上面的这里

使用这个函数的时候可以获取当前的一帧新图像

这些函数连起来使用就是这样的写法

关闭摄像的写法?这里不是关闭硬件,只是在软件的层面处理,先设置标志位,接着延时一下,关闭摄像头。

看下初始化一辆车的过程。

一个车的类

一开始的初始化内容,指向了一个Memory

保存字典自己实现的类

先建立一个新的空白字典

这个方法应该以与键相关联的方式存储值,以便之后能够使用__setitem__来获取。当然,这个对象可变时才需要实现这个方法。

如果key是元组,就打印(傻逼语言),自己看把。下面新建了两个空白元组。

接着打包进去

凡是在类中定义了这个__getitem__ 方法,那么它的实例对象(假定为p),可以像这样p[key] 取值,当实例对象做p[key] 运算时,会调用类中的方__getitem__。

一般如果想使用索引访问元素时,就可以在类中定义这个方(__getitem__(self, key) )。

重用了updata方法,更新键值对。

put方法不记得了。。。参数是key和输出?看懂了,使用一群key取一群值。

这个函数好,记住了,下次这样写。

下面就是常规的函数了,get是对上面的友好封装。

另外还有一个类,作用未知先读着。

初始化一个类

记录一个动作的时间戳应该是

完成部分

获得现在的时间,取一个记录里面最后一个内容,做差,接着来判断时间,把操作的间隔写进去,这个好像是上传操作内容设计的。

完整的记录函数,先打印一条日志。接着建立一个文字表格:

效果如图

表头,数值,然后后面是使用了列表推导。

接着从记录里面一个一个的处理,计算他们的四分位数。row的写法复杂,没有看懂。但是肯定是处理了row,将内容加到pt。最好以日志方式打印。

numpy函数

OK,才读完

看看add函数

确保内容的正确,先使用断言前置判断

part不懂?看看使用,知道是一个数据源,接着写了一个字典,把内容写进去

使用

threaded是一个线程标志,是不是要按照多线程的方式运行

从列表里面移除来源

循环回路的频率,以及要循环的最大数,后面是布尔值要不要写到屏幕。

一大坨,呜呜呜不想写了

看这个,设置开始记录,读取标志,开始写入

操作的数据结构在此

打印日志,开始记录,读取当前的时间,以前循环计数+1,下面这个函数我接下来读,先放着,反正就是写入操作。

没有有循环限制以及开始计数的情况下,把开关关了

睡眠时间是频率取倒数-现在的时间-开始的时间

如果时间大于0,就重新当作初始时间运行。在下一个支路,判断verbose标志位,如果有就输出到shell其实就是日志。

如果开始输出以及(其实是200ms记录一下),就写入到Table里面。

一个漂亮的结尾

还有两个函数没有读,偷懒,下次补上。

拍到的照片要给Stereo的函数处理,看看是什么。

这是一个图像类

只不过不是立体的处理,而是要合成照片。

两个image非空的情况下,先把a照片的信息读出来,前面是元组解包,只要W,H。

接着是从自己实现的工具类里面,把两个图转换了颜色,成了灰度图像。只要做了一下减法。

开始重新创建照片,先用zeros函数,按照解包的参数新建空白容器。接着把三色通道写入。感觉效率有点慢。

如果照片非空,直接就是空表了。

之后转换成数组传出来。

如果是D435呢?其实这里是D435i应该是,以为有IMU数据。

相机参数,要使用RGB,深度,IMU和设备的ID数据。

8个数据一起写入

当然这里可以重写方法的,不是每个人都能买的起D435的。后面是如果要reszie的操作。

用的or,有一个参数不一样就ok,长宽和通道。

还有一个模拟器,下篇文章写。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 云深之无迹 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档