git clone https://github.com/CQUT-handsomeboy/meter_reader.git
pip3 install -r requirements.txt
python3 main.py path/to/your/target/image ./LFS/thermometer_detect.pt ./LFS/tilt_correct.pt ./LFS/thermometer_read.pt
-
使用YOLOv8检测出仪表盘ROI。
-
对仪表盘ROI再次使用YOLOv8检测出三个特征点。
-
对检测出的三个特征点运用仿射变换进行倾斜矫正。
-
对倾斜校正后的仪表盘ROI再次使用YOLOv8检测出表针ROI。
-
取表针ROI中心,与
Standard图像
(即放射变换目标矩阵的原图像)中的指针中心作差得到表针向量。 -
将表针向量与
Standard图像
中的起始指针向量计算夹角,换算得到仪表读数。
-
使用YOLOv8检测出仪表盘ROI和表盘种类
-
对仪表盘ROI进行特征点匹配,使用仿射变换实现倾斜校正得到倾斜校正仪表盘ROI
-
计算得倾斜校正仪表盘ROI中心坐标,并对其再次使用YOLOv8检测出指针ROI和基准点
-
通过倾斜校正仪表盘ROI中心坐标和基准点计算出基准直线
-
对指针ROI 预处理后使用霍夫线检测得到霍夫线检测直线组
-
将霍夫线检测直线组reshape后得到点坐标,使用Kmeans聚类聚为2类
-
将2类Kmeans聚类坐标分别使用最小二乘法拟合
-
计算两个最小二乘法拟合直线 相交坐标
-
连接相交坐标和倾斜校正仪表盘ROI中心坐标,得出指针直线
-
联系指针直线和基准直线,求得指针偏转角度
-
根据YOLOv8识别出的表盘种类,得出相应读数
-
通过YOLOv3实现对表盘的分类
-
通过特征点法获得透视矩阵
-
利用透视矩阵对椭圆进行矫正,得到标准表盘
-
通过霍夫圆检测得到表盘
-
通过霍夫圆直线检测得到表针
-
计算出表针偏移方向
-
结合表盘分类实现读表