自从用上了 homeassistant,总是想着把家里的各种东西集成进去。上次把总电量接入了(参考我的贴子: https://bbs.hassbian.com/thread-6410-1-1.html )。
这次又想着把用水量也接进去。收集这些数据,期望可以发现:
家里的水表是放在门外的公共水表间里面的。大概就是在楼道里面有一个门,门里面排着很多水表,门一关里面黑黑的。水表就是普通的塑料水表了。
为了低调,在水表间房顶安装了 raspberry zero w 和 pi camera,用 gpio 控制当拍摄时,打开 8 颗红外 led 闪光照明。把所有的东西放在一个 3d 打印的盒子里面。用细线引直流电源供电。3d 打印的外壳为黑色,并且没有可见光照片,在黑漆漆的水表间中很没有存在感。pi camera 是 1 代的 500W 像素,距离水表表盘大概 4 米。表盘大小为 8cm 的样子。为了得到足够大的图,给 pi camera 换了一个焦距大概是 10mm 左右的监控镜头。
这是第一版的图:画了块 PCB,上面有白光 led、dc-dc 电路、一个电机驱动(想后期接机械臂用来远程开关水阀)、光照度传感器、时钟芯片、还有块液晶屏。这一版没有最终采用,因为白光 led 实在是太高调了,夜晚楼道里一闪一闪的很是吓人。
第二版就去掉了不少东西,led 换成了红外的,电机驱动、屏幕光照啥的全部去掉,这一版给直接安屋顶了没拍照片,不过 3d 打印外壳的时候,为了得到尺寸,做了个 3d 效果图。
这样搞了一波后,在 respberry 中用 crontab 每隔 30s 跑脚本拍照,拍出来的照片大概是这样子的。最右边的那个表盘是咱家的。
经过一波 opencv 各种心态学、边界操作后(这图的特征是表盘比表盘的边暗很多,这特征很容易分开表盘)。找到了表盘。
在经过一波 opencv 的模板匹配(我只关心这种样子的水表,那做一个模板把对应的区域切出来)。得到了数字和指针。
其中数字还是挺清晰的,0342,边缘增强,二值化也容易,然后四等分后,跑一个分类器,再考虑写边界条件,估计就 ok 了。
指针有点模糊,但是肉眼还是可以分辨是指向下面的。分析:本身指针是红颜色的,表盘是白色的,在红外 led 的照射下,红色指针能反射红外光,表盘能反射红外光,所以两者的区别就不是很大。要二值化分离出来找形态特征似乎不是很容易。放 tensorflow 里面跑一跑(初学只是看了一些书),用了普通的回归做出来效果也不怎样。这块我就卡在这里不知道怎么办了,没有任何思路,求指点。
新的镜头到货,原来16mm的镜头,换成了25mm的镜头,效果提升,至少现在能看清楚圆盘上的小字了,大赞!
最近半个月一直在研究实践上面的github上的那个工程,学到了不少知识,也有一些进展,总结如下:
附一张识别结果图:每隔5分钟识别一次水表的最小两位表盘,识别结果在文件名中。由于条件限制,剩下的两个表盘拍不全(最近物业把水表箱全给上锁了,硬件先不调整了)
集成home assistant成功,结贴撒花。感觉各位提供思路。
1
SeaRecluse 2019-09-09 16:27:16 +08:00
啊,你这都固定位置了,完全用不上模型啊。表盘边缘检测下,然后根据坐标不就知道数字了- -,另一个水表的数字直接 OCR,不用分类器
|
2
optional 2019-09-09 16:46:46 +08:00
👍🏻 这行动力
|
3
lxrmido 2019-09-09 17:00:13 +08:00
求教 LZ 是用什么做效果图的?最近打印 pi 的外壳想装到花盆上观察植物生长,用尺子量尺寸量得心好累,一个外壳要打印七八次实物出来一点点修改等得心态快炸了
|
4
sadfQED2 2019-09-09 17:05:51 +08:00
你都用上 opencv 了,简单二值化,然后直接丢 tesseract ocr 就完事了,还要什么 tensorflow
|
5
chengxiao 2019-09-09 17:07:33 +08:00
如果不在乎钱的话 可以找一些线上的打码平台,专门识别验证码的,价格差不多几离到 1 分一次
|
6
allgy 2019-09-09 17:21:48 +08:00
提高输入图像的质量,1.换高清摄像头,2 改善光线条线 ?
|
7
nisnaker 2019-09-09 17:30:21 +08:00 1
按 1 楼所说,监测一些固定的像素就能确定指针的指向吧;另外提供一个思路,我觉得直接用 0342 那张图,末位数字的纵坐标也能确定小数点后边的值,都不用看指针。
就比如 0342 这张图,看 4 和 2 的位置,2 应该是向上移动的,按说应该是 2 垂直居中的时候是 2.0,现在看好像是往上走了一点点,但远没到 3,姑且认为是 2.1 或 2.05 吧,精确的值可以多搜集一些数据把公式求出来就行了。 |
8
msmmbl OP @SeaRecluse 谢谢。表盘边缘检测我试试看能不能把特征搞出来。
@lxrmido Altium Designer 可以导出 pcb 和 3d 元器件为 step 文件,然后导入 solidworks 中。然后就可以画外壳啦。 @sadfQED2 谢谢,tesseract ocr 我去了解下。 @chengxiao 哈哈,人肉识别,很强势 @allgy 嗯,是,硬件上,后期考虑换树莓派 v2 的 camera,这样可以得到更多的像素,以及增加更多的红外 led (不过红色指针会不会在更多的红外 led 上更清晰还需要实验)。不过这一版既然已经人肉可分辨了,还是考虑能否在软件上搞定。 |
9
seraphv3 2019-09-09 19:34:54 +08:00
|
10
xmoiduts 2019-09-09 19:56:42 +08:00
觉得判定最小数字位置的方案可行;另外,那个黑色大兴机场型指针敏感度应该最高,如果能拍到视频,也可以间接测出水流量吧。
|
11
msmmbl OP @xmoiduts 拍视频应该问题不大。可是这个黑色的东西有时候转的很快,快到只有阴影的那种。可能是这种弱光情况下帧率上不去……我得再看看。
|
14
shintendo 2019-09-09 20:59:34 +08:00 1
原来是真的水表
|
15
cshlxm 2019-09-10 09:22:50 +08:00
这个查水表的方式 硬核~ 楼主行动力真 nb~ 6666
|
16
koala9527 2019-09-10 09:51:04 +08:00
有这个动手能力,在家再接一个流量传感器就行了。。。
|
17
qping 2019-09-10 11:08:16 +08:00
3d 打印是自己买设备么
|
18
ty89 2019-09-10 12:46:35 +08:00
把你家的总表换成智能的就行了,费这劲
|
19
sorasyl 2019-09-10 15:41:48 +08:00
你这头像,怪不得要查水表
|
20
hahaayaoyaoyao 2019-09-10 15:55:34 +08:00 via Android
自己写代码,我可惜帮你。
|
21
ziding 2019-09-10 16:19:14 +08:00 1
我说个我们原来水表上用过的方案,在最小的指针上嵌入一小块磁铁,然后外面用霍尔进而感应计数。
|
22
deorth 2019-09-10 18:05:03 +08:00
楼主这头像让我以为是要防查水表
|
23
piaochen0 2019-09-10 22:27:01 +08:00
我只知道有一个朋友的公司做这套算法,让一个程序员什么事情都没干,专研了半年搞出来了...
|
24
classyk 2019-09-11 08:20:19 +08:00
是否可以考虑加一点光源,在拍摄的时候打开光源,以提升图像质量
|
25
msmmbl OP @koala9527 @ty89 我们这边水表以及附近的设备的物权属于自来水公司,而且管路都预埋在墙里了,我做不了什么,下次装修回考虑。
@qping 3d 打印机现在基本从硬件到软件都开源了,我参考了这个贴子 https://post.smzdm.com/p/332896/组了台,外观丑了点但是效果还行。整个过程还是很有意思的,考虑组个? ![未标题-1.jpg]( https://i.loli.net/2019/09/11/maGrN9ROiUuHL52.jpg) @ziding 霍尔是个挺不错的方案,可以做到很低的功耗。用霍尔传感器检测磁性唤醒 MCU 计数就行。然而我这水表全塑料的,一点磁性都没。 @piaochen0 原来这东西这么难啊 @classyk 嗯,后期实在不行有个计划,在表盘附近按一个用电池驱动的绿光 led,和摄像头无线联动拍摄时候同步照亮指针区域,因为区域小可以用很小的 led,应该不会太高调。 |
29
webshe11 2019-09-12 05:48:53 +08:00
头像 + 标题 = cha 水表
|
30
tmsdy0404 2019-09-13 00:17:04 +08:00 via iPhone
执行力 max!!
也想入 3D 打印的坑。。。。 |
31
zomco 2019-09-13 13:55:05 +08:00 via Android
就用 OCR,不要用 tensorflow
|
33
ZeroW 2019-09-16 22:02:26 +08:00 via Android
大哥,你网站挂了
|
35
msmmbl OP @1314258 目前树莓派有出两个版本的摄像头,一个是 500W 像素的,一个是 800W 像素的。800W 像素那个硬件上带了一个加密芯片,导致市场上没有第三方生产,而官方的那个又不能换镜头,所以不选用。500W 像素那个,随便淘宝上找下就好了,选有 M12 镜头座不带红外滤光片的那种,比如"树莓派 红外 夜视 调焦"这样的关键字。镜头可以去看看卖监控的店,M12 的小镜头,我最后选了 25mm 的镜头。
|