python 电表辨认
Python是一种高级编程语言,具有简洁、易读、易于学习和使用的特点。它有着广泛的利用场景,包括电表辨认。电表辨认是一项基于数字图象处理的技术,可以自动辨认电表读数并精确抄表,提高抄表效力和减少误差。
import cv2 import numpy as np from PIL import Image image_file = 'meter.jpg' #print("正在读取文件夹 %s 中的图片......" % image_file) img = cv2.imread(image_file) gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) ret,thresh = cv2.threshold(gray,127,255,cv2.THRESH_BINARY_INV) kernel = np.ones((5,5),np.uint8) opening = cv2.morphologyEx(thresh,cv2.MORPH_OPEN,kernel, iterations = 2) sure_bg = cv2.dilate(opening,kernel,iterations=3) dist_transform = cv2.distanceTransform(opening,cv2.DIST_L2,5) ret, sure_fg = cv2.threshold(dist_transform, 0.7*dist_transform.max(),255,0) sure_fg = np.uint8(sure_fg) unknown = cv2.subtract(sure_bg,sure_fg) ret, markers = cv2.connectedComponents(sure_fg) markers = markers+1 markers[unknown==255] = 0 markers = cv2.watershed(img,markers) img[markers == ⑴] = [255,0,0] #cv2.imshow('Segmented Meter', img) region = [(500, 194), (1236, 144), (1270, 306), (504, 356)] crop = img[region[1][1]:region[3][1], region[0][0]:region[2][0]] im = Image.fromarray(crop) #im.show() im2 = im.convert(mode='1') #im2.show() print("正在分析图片中的数字......") text = pytesseract.image_to_string(im2, lang = 'eng', config='--psm 10 --oem 3 -c tessedit_char_whitelist=0123456789') print(text)
以上是辨认电表读数的Python代码,其中使用到了OpenCV库和Pillow库,也调用了tesseract-ocr引擎来辨认数字。通过读取电表图片,先进行图象处理,再进行分割和辨认,最后得到电表读数,实现了电表自动抄表的功能。
文章来源:丸子建站
文章标题:python 电表辨认
https://www.wanzijz.com/view/57690.html