python+opencv电表读数自动识别,电表电量自动读取
python+opencv电表读数自动识别,电表电量自动读取,直接运行image_re.py,输入需要读数的电表图片即可,程序包中以提供测试图片(1.jpg-4.jpg)。opencv采用3.4.15.55版本,支持多个电表同时读数。
完整程序代码下载地址:python+opencv电表读数自动识别,
image_re.py
# from aip import AipOcr
import cv2
import numpy as np
from num_recon import templatingdef img_devide():kernel = np.ones((5, 5), np.uint8)global numglobal boxesnum = 0boxes = []for i in range(1):path = input('Please input the filename:')print(path)# 缩放图像img = cv2.imread(path, cv2.IMREAD_GRAYSCALE)res = cv2.resize(img, None, fx=0.5, fy=0.5,interpolation=cv2.INTER_CUBIC)cv2.imwrite('res.png', res)equ = cv2.equalizeHist(res)cv2.imwrite('equ.png', equ)_, thres = cv2.threshold(equ, 0, 255, cv2.THRESH_BINARY_INV+cv2.THRESH_OTSU)cv2.imwrite('thres.png', thres)height, weight = thres.shaperoi = thres[0:int(height*0.5), :]cv2.imwrite('roi.png', roi)opening = cv2.morphologyEx(roi, cv2.MORPH_OPEN, kernel)closing = cv2.morphologyEx(opening, cv2.MORPH_CLOSE, kernel, iterations=1)img_postion, contours, _ = cv2.findContours(opening, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)contours.sort(key=len, reverse=True)for i in range(len(contours)):max_contours = contours[i]epsilon = 0.015 * cv2.arcLength(max_contours, True)approx = cv2.approxPolyDP(max_contours, epsilon, True)brims = len(approx)perimeter = cv2.arcLength(max_contours, True)area = cv2.contourArea(max_contours)# 挑选边框 选择目标区域if (brims >= 4 and (area/perimeter) > 50):# print(brims, area/perimeter)rect = cv2.minAreaRect(max_contours)box = np.int0(cv2.boxPoints(rect))boxes.append(box)cv2.drawContours(opening, [box], -1, (128, 132, 125), 5)cv2.imwrite('opening1.png', opening)num = num + 1if num == 2:num = 0break# 保存识别的区域for i in range(2):Xs = [i[0] for i in boxes[i]]Ys = [i[1] for i in boxes[i]]x1 = min(Xs)x2 = max(Xs)y1 = min(Ys)y2 = max(Ys)# print(x1, x2, y1, y2)roi_ = res[y1:y2, x1:x2]cv2.imwrite('roi' + str(i) + '.png', roi_)# 遍历数字图像,读出内容for i in ['roi0.png', 'roi1.png']:img_0 = cv2.imread(i, cv2.IMREAD_GRAYSCALE)roi_h, roi_w = img_0.shapeimg_0 = img_0[int(roi_h*0.4):int(roi_h*0.8),int(roi_w*0.1):int(roi_w*0.93)]cv2.imwrite('num_roi.png', img_0)blurred = cv2.GaussianBlur(img_0, (1, 1), 0)_, roi_thres = cv2.threshold(blurred, 20, 255, cv2.THRESH_BINARY)cv2.imwrite('roi_thres.png', roi_thres)kernel_1 = np.ones((3, 3), np.uint8)kernel_2 = np.ones((1, 1), np.uint8)roi_close = cv2.morphologyEx(cv2.GaussianBlur(roi_thres.copy(), (1, 1), 0), cv2.MORPH_CLOSE, kernel_2, iterations=1)cv2.imwrite('roi_close.png', roi_close)kernel_3 = np.ones((2, 2), np.uint8)roi_erosion = cv2.erode(roi_close, kernel_3, iterations=1)cv2.imwrite('roi_erosion.png', roi_erosion)# 数字识别templating('roi_erosion.png')if __name__ == '__main__':img_devide()
完整程序代码下载地址:python+opencv电表读数自动识别,
python+opencv电表读数自动识别,电表电量自动读取相关推荐
- python opencv 实现从一个文件夹中读取图片做切割处理后放入另一个文件夹
python opencv 实现从一个文件夹中读取图片切割处理后放入另一个文件夹. 实现的功能是把一个文件夹里的图片作处理,即把原图片中心为起点切割成1536*1536的图片,原图片必须大于这个的大小 ...
- python opencv 从Intel Realsense D435 视频流中读取并显示帧,按下空格将图像保存到指定文件夹,按下回车自动以一定时间间隔保存图像至指定文件夹
参考文章1:opencv之读入一幅图像,显示图像以及如何保存一副图像,基础操作 参考文章2:python-OpenCV2中 cv2.VideoCapture(),read(),waitKey()的使用 ...
- python 仪表盘图片读数_OpenCV 表盘指针自动读数的示例代码
前段时间参加了一个表盘指针读数的比赛,今天来总结一下 数据集一共有一千张图片: 方法一:径向灰度求和 基本原理: 将图像以表盘圆心转换成极坐标,然后通过矩阵按行求和找到二值图最大值即为指针尖端 导入需 ...
- 机器学习水果识别——python+opencv实现物体特征提取
文章目录 一.用python+opencv实现物体特征值提取 1.读取图像.转为灰度图像并降噪 2.获取水果轮廓 将最大轮廓画入最开始的img图像并显示 将小于某一规模的轮廓删除 3.提取水果的面积周 ...
- python opencv如何读取透明png图片以及如何编辑透明度
python OpenCV中 cv2.imread(img_path)默认会读取BGR图像,即3通道图像,读出的图像尺寸为h,w,c.cv2.resize(img, (w,h)),resize中的尺寸 ...
- opencv模板匹配做电表读数区域的检测
描述 电表读数识别的时候,需要进行读数区域的检测.在PC上用什么方法都可以因为没有硬件限制.在移动端/终端的时候,因为硬件的限制无法用深度学习,可以尝试图像处理的模板匹配. 模板图片 测试图片 cod ...
- PPOCR文本检测+识别:电表读数和编号识别
0 项目背景 在本系列项目中,我们尝试基于Paddle工具库实现一个OCR垂类场景.原始数据集是一系列电度表的照片,类型较多,需要完成电表的读数识别,对于有编号的电表,还要完成其编号的识别. 1 数据 ...
- rs232读取智能电表_老王说表之--快速查看家里电表读数的方法
电表度数怎么看?对于现阶段来说不管是家用电表还是智能电表,都会遇到这个问题,随着电表的型号功能越来越多,电表度数的查看也是区别不少的,下面小编就结合市面上常见的一些电表为大家介绍下电表度数如何查看. ...
- OCR产业应用实战,多类别电表读数识别方案详解
我国电力行业发展迅速,电表作为测电设备经历了普通电表.预付费电表和智能电表三个阶段的发展.在产业场景中,表的种类多达十几种,过去依赖人工抄表,成本很高.如果能够采集到大量电表图片,借助人工智能技术批量 ...
最新文章
- CVPR2021直播|点云补全的方法梳理及最新进展分享
- HTML5 — 让拖放变的流行起来
- 博主新书:《大数据日知录:架构与算法》目录
- SVPullToRefresh问题解决
- uri uri_什么是URI? 了解许可证术语以确保合规
- docker create_Docker镜像管理(一)
- 三维旋转矩阵_旋转之一 - 复数与2D旋转
- MySQL连接超时自动断开连接问题
- 如何获得base64图片的高度_如何使坡口机工作的高度获得提升
- 数字信号处理matlab版答案,数字信号处理(MATLAB版)
- 【效率】7个免费的PDF文献资源网站,再也不用为搜索文献发愁了!
- Arcgis拓扑检查
- MarkDown的下载、安装和基础使用
- 新机常用软件及环境配置清单
- python学习笔记(四)XML解析
- 解决photoshop cc在4K分辨率下字体过小。
- 设计专业是计算机的吗,计算机平面设计是属于计算机什么专业范畴?
- 中国科学院大学计算机复试,被中国科学院北京计算所录取了...(复试经验)
- 【名师大讲坛】叶俊受《金刚经》的启发创造“名非论”-火锅智烩节目组根据视频文字整理
- win7 找不到 本地用户和组