wx.checkjsapi是写在config里面吗_从零开始写的跨平台嵌入式机器视觉库(YMKV)

9b6cca6a2c787318c7bc62af5a93e3d1.png

这篇是开篇扯淡。因为常年玩单片机吧,像网上的教程吧,比如正点原子,野火....,他们整体教程个人感觉偏向于互联网,接口。安富莱有DSP相关的教程,会偏一些算法,还有硬石的电机控制也比较不错。但是人工智能边缘计算这块却少的可怜。在我大二那会儿,因为兴趣原因,写了一个在STM32上跑的机器视觉库,当时我用的是keil环境,所以随便取了一个keil version的名字。所以就一直沿用该名字,没有修改过。YM其实就是yao mi,可能我个人比较喜欢猫,猫叫是mi-yao~,但是如果用mi yao可能听起来怪怪的。感觉自己变成了一只猫

39fcb2f3b555b427588be25efe598337.png

当初写这个库的时候,其实我并没有打算开源的。不过他真的非常小型,核心算法部分大概只有4K左右的行数,包含了大部分常用图像处理算法,要移植的话也非常容易。STM32的工程是这样的:

8e2274adb8c49683fa37e805dab0e02e.png

抛开外源移植的ZBAR和QRENCODE两个算法库,单纯YMKV库移植的话,只要CONFIG,GRAPH,YAOMI三个文件夹。当然,你如果不想要GRAPH的话也是可以的,因为他里面是这些东西,没有的话你再加进去:

9bcef001b1943e1de3af2d894a1ee1ae.png

移植的话,Puse这个文件必须带走,其他文件可以随意,也可以都不要。

但是CONFIG和YAOMI两个文件夹一个不能落下,CONFIG文件内容是这样的:

8d7b1a5dca4413b84068f561e8cce065.png

而YAOMI文件夹是最重要的,内容是这样的:

bd176bd68fdba5096de2bd6ef17089e9.png

可能你会说,图像处理用C语言写,你是不是脑子瓦特了?不是特别复杂,而且函数调用都不方便,连struct里都不能放函数!!!em。。。你如果觉得我脑子瓦特了,没啥问题,可能确实有点瓦特,我个人也这样觉得。但是这个库吧,他用起来真的很简便,比如说我要对摄像头传进来的图像进行灰度化,我们只要这样做就可以:

首先,进行底层初始化和算法库的初始化,红色部分:

53e2d36f543f7525e23e3db4102accd8.png

然后到图像处理函数去写图像处理流程,就可以啦:

6cfa35bcb40859ac76444a7c698bcc09.png

彩色图转灰度图只要一行代码就可以,如果复杂点,比如颜色识别,而且是多种颜色一起的话,下面6种颜色色块同时识别:

ca2715f1c90205b19621f5b34bfd70d1.png

看着也挺简洁的,我个人觉得是这样.......................................

虽然他当初是跑在STM32上的,但是吧,毕竟下载和验证算法调试什么的,都比较费事。所以我通常在PC端进行算法测试。移植到PC端,首先得解决显示问题,开个窗吧,和之前的就不太一致,所以早期,我就采用了EGE这个图形库,但是毕竟安装库,兼容性偶尔会出问题,比如说老版本的EGE在win10 1809之后的系统设定变了,线程时序问题导致显示不出图形,得去官网更新EGE的库。所以后期,我秉承着极简的原则,放弃了EGE,直接用GDI在控制台上绘图,虚拟出一个LCD设备,直接显示在控制台上:

2bf9d0a73535b3fdeade1d10090eadeb.png

然后运行颜色识别例子进行测试:

5131d85880e719aaaff8ca3d73bb93bf.png

非常好,测试也通过了。我们来看看VS工程都有些啥内容:

f614ae71c06c41145ddba5860ad30b98.png

多出一个windows特有的文件夹,但是里头的文件只有两个:

9a8c72206e03b3509119c6d40db998a6.png

所以,这样的话,要从VS工程移植到其他平台都会简单的多了,因为上面这两个文件,除了在控制台上虚拟出一个LCD设备以外,其他啥都没干。

虽然后面改进以后的版本目前也没有开源,不过最初的版本倒是开源了,如果有想参考和学习图像处理和机器视觉的小伙伴们,可以进B站的传送地址:

https://www.bilibili.com/video/BV1q441117cB?from=search&seid=1256428342308790631​www.bilibili.com

当然或许有人会说,openMV不香吗,树莓派不香吗,其实我觉得也还不错,不过大部分电赛可能会把树莓派禁了,openmv的话,你重新画个原理图伪装一下,估计也是可以的,困难现在都不禁了,我之前也玩过openmv,em.....当时我记得用了一个闭运算,导致掉帧非常严重,以至于和机械臂闭环非常的......不友好,当时用的单目做三维物体定位,视频传送地址:

stm32机械臂画圆,机械臂逆解+机器视觉+最小二乘定位_哔哩哔哩 (゜-゜)つロ 干杯~-bilibili​www.bilibili.com
47472541e1cdde178b465f34da2a3102.png

但是如果使用YMKV优化以后库的话(这个暂时可能也不开源,因为里头有一些个人的算法,但是的话,会打包出来提供给大家使用),二值图膨胀腐蚀其实我已经优化的非常快了,我敢说肯定比openmv快N倍,在某些参数测试下甚至翻10倍我觉得都没啥问题(遗憾的是优化版并不打算开源。PS,网友:你就吹吧,要是能翻十倍,我直播剁diao~!)。

当然如果库提供大家使用的话,肯定得出教程,但是出教程也是个麻烦事,其实我不太想出视频教程(可能以后会出),但是我觉得你们可以拥有它(如果是要初级版的教程,看b站,有视频教程):

2fefe097c5d4f2010dc4f179644c8cd9.png

9eb8119f2bfca5d53ba2080ade4ec88f.png

再配一些demo,我感觉就能使用无障碍了,毕竟这个库拥有国内的支持,让英文不好的同学也能无障碍修仙.......这个库的初级版开源的,在b站有地址,优化版什么时候会发布,暂时无解,算是挖个坑吧,以后再填。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值