栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

双指针仪表盘读数(一)

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

双指针仪表盘读数(一)

本章节内容:拿到项目的思考以及表盘识别    

 我基本上把CSDN上所有的关于指针读数文章以及下载都看过了,有需求或者疑问的同学可以来交流,资源也可以免费给了,最后的识别效果就如上一篇的图片所示,运行程序占用的资源经过优化之后特别小,GPU可有可无。回头写个论文弄个专利应该挺轻松的。

开发语言:python3.0+

调用包:

1.sys                 用于退出程序:sys.exit()
2.time                用于计算时间,还用于matplotlib画图的计时
3. win32api           用于监测按钮  win32api.GetKeyState(27)
4. cv2                主要调用,大部分处理都需要opencv,版本为3.4
5. imutils            主要用于计算中心点坐标
6. matplotlib         画图
7. numpy              数学
8. PIL                主要用于转化arry数组为图像

具体版本见下表,懒得一一对应了,自己找一下吧

说一下刚拿到需求的思路以及后来否定的过程:

拿到的需求:一个表盘,识别速度以及信号,表盘为圆形

 

想法:hog+svm训练模型,实时追踪表盘位置,霍夫直线识别直线,以角度识别对应的速度

实践:hog+svm的速度可以,但是霍夫直线检测效果特别差

原因: 因为表盘使用的指针是一个椭圆形指针,前端有一小节指针,识别效果不理想,

应对办法:使用opencv图像处理对表盘进行二值化之后,使用细化算法(Image Thinning),和之前看的腐蚀膨胀差不多,看了都可以很快理解,但是加上细化算法之后识别效果还是很差,此路不通,换方案。

 

由于中间厂家换了一种表盘,使用的hog+svm寻找表盘就不可以用了,换为霍夫圆形检测(hough cirlce Transform),调参是一门大学问,可以根据自己需求进行调参。

circles = cv2.HoughCircles(
        binary, cv2.HOUGH_GRADIENT, 2, 1000, param1=100, param2=100, minRadius=10, maxRadius=5000)

      但是有一个问题,一直进行霍夫检测圆对于计算机的性能要求特别高,时间复杂度空间复杂度大,对于处理视频而言效率达不到,这里我想到了一个解决办法,使用第一次识别出来的圆形对图像进行切割,后续视频中所有的圆形全部按照这个切割区域进行识别,大大降低了设备性能损耗。摄像机位置后期固定,此方案为多种方案对比下最好的方案。

对比方案:1.CSDN某博文方案:模板匹配法

                2.自己之前的方案:hog+svm

                3.视频每一帧都进行霍夫圆形检测方案

                4.CSDN某下载方案:忘了啥方案反正我这边做的效果都没上述对比效果好。

本章写到这里吧,工作原因,改天继续

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/740734.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号