DonkeyCar源码阅读.1(简单安装 创建系统)
DonkeyCar源码分析.2(官方硬件 相机处理)
DonkeyCar源码阅读.3(操作记录 若干图像处理)
donkeycar有一点做的很好,每一个小的应用都会使用自己的工具生成一个库,今天读的就是这一块的代码。
位置在这里,base提供了工具
在库的开始有很多自己的库
代码语言:javascript复制from progress.bar import IncrementalBar
这个库是一个显示进度条的库
可以写出这样的程序
特别的,这里的小工具库是我每次都喜欢看的一个东西
你看这个写法,在字符串的文档里面就写了参数和返回值函数的名字也是一目了然,归一化图像。
加载一个图像
传入的参数是,文件的名字和一个参数,cfg一般就是config的意思。最后返回一个u8的图像数组。里面依赖的是另外一个函数,在下面会讲这个。
抱歉有点没有选够
在这里有,就是对真实的图像的参数和我们给的参数做这样比较计算,如果大小不一致,这里就会开始执行一个reszie的工作,之后来处理图像的深度通道。PIL有九种不同模式: 1,L,P,RGB,RGBA,CMYK,YCbCr,I,F。
img.convert('L')
为灰度图像,每个像素用8个bit表示,0表示黑,255表示白,其他数字表示不同的灰度。
转换公式:L = R * 299/1000 G * 587/1000 B * 114/1000
关于配置其实是一个比较复杂的文件,之后说,以为我不确定是不是是这个关联的代码文件。
这个是另外一个错误的修改代码
这里是对图像的数组转换工作,其实就是说无论怎么样都要保证我们的返回文件的正确性。
这个代码的意思其实是扩展一个通道的代码
另外有个math的库,里面定义的几种常见的变量,都是使用float来定义的
返回目录的名称
顺手又可以看看这个函数的实现,打印目录的名字
返回一个路径的文件系统的表示
在内部的话,是使用这个来实现
join是拼接多个路径,其实是加进去
包,模板,帮助文件
新生成一个目录
这个函数是把现在的目录补全返回
先来打印这个目录:
如果没有的话,就创建一个新的目录,之后返回
加载一个配置的文件
把配置文件的和路径补全,接着判断一下路径是不是真的创建成功。然后会打印一个错误的日志,也会打印:没有配置文件在地方。之后就返回一个None。
下面是一个错误的处理代码,但是这个加载配置的函数,是实现的一个新的函数,和上面本身的函数的实现不一样。把西面的也看了,except就是日志了,后面都一样了。
这个函数比较大
如果配置的路径是空的话,就导入下面这个__main__。
__file__表示显示文件当前的位置
但是:
如果当前文件包含在sys.path里面,那么,__file__返回一个相对路径!
如果当前文件不包含在sys.path里面,那么__file__返回一个绝对路径!
然后会把这个路径加进去,假如不存在的话就会又加进来。
这个是使用了一个反射的功能
代码语言:javascript复制https://docs.python.org/zh-cn/3/library/os.path.html?highlight=path#os.path.expanduser
代码语言:javascript复制https://developer.horizon.ai/api/v1/fileData/documents_pi/index.html
代码语言:javascript复制https://docs.python.org/zh-cn/3/library/os.path.html?highlight=path#module-os.path
代码语言:javascript复制https://www.py.cn/jishu/jichu/19324.html
代码语言:javascript复制https://www.cnblogs.com/haifwu/p/12825741.html