首页 > 编程语言 >实战 | 计算器/数码管OCR数字识别(附源码)

实战 | 计算器/数码管OCR数字识别(附源码)

时间:2022-10-17 20:05:03浏览次数:52  
标签:ROI 识别 20 img cv2 数码管 源码 result OCR

视觉/图像重磅干货,第一时间送达


导读

本文主要介绍一个计算器显示数字识别的OCR实例,基于OpenCV和EasyOCR/PaddleOCR。

 实例来源

实例来源于51Halcon论坛,对应的Halcon实现这里不做介绍,如下图,最终目的就是识别计算器显示数字内容。

实战 | 计算器/数码管OCR数字识别(附源码)_paddle

初步思路:先提取显示区域ROI,然后使用EasyOCR或PaddleOCR直接识别。

 实现步骤与演示

【1】通过HSV阈值筛选,分离液晶显示区域;

实战 | 计算器/数码管OCR数字识别(附源码)_常用函数_02

【2】轮廓筛选,精确定位出液晶显示区域;

实战 | 计算器/数码管OCR数字识别(附源码)_深度学习_03【3】截取ROI后传给EasyOCR识别

实战 | 计算器/数码管OCR数字识别(附源码)_paddle_04

【4】实现完整源码与注意事项


# -*- coding: cp936 -*-
import numpy as np
import cv2
import easyocr

font = cv2.FONT_HERSHEY_SIMPLEX
reader = easyocr.Reader(['en'])

img=cv2.imread("test.jpg")
hsv_img=cv2.cvtColor(img,cv2.COLOR_BGR2HSV)

lower_hsv = np.array([0,0,30])#颜色范围低阈值
upper_hsv = np.array([170,100,210])#颜色范围高阈值

mask = cv2.inRange(hsv_img,lower_hsv,upper_hsv)#根据颜色范围删选
mask = cv2.medianBlur(mask, 5)#中值滤波
cv2.imshow('mask', mask)

contours,hierarchy = cv2.findContours(mask, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_NONE)
ROI = None
rect = (0,0,0,0)
for cnt in contours:
(x, y, w, h) = cv2.boundingRect(cnt)
if(w > 240 and w < 300 and h>60 and h < 100):
ROI = img[y-20:y+h+20,x-20:x+w+20].copy()
cv2.rectangle(img,(x,y),(x+w,y+h),(0,255,0),3)
rect = (x, y, w, h)
break
cv2.imshow('e',img)
cv2.imshow('ROI',ROI)
cv2.imwrite('roi.jpg',ROI)

result = reader.readtext(ROI)
if len(result) > 0:
for i in range(0,len(result)):
print(result[i][1])
strText = result[i][1].replace(' ','')
cv2.putText(img,strText,(rect[0],rect[1]),0,1.5,(0,0,255),3)

cv2.imshow('result',img)
cv2.imwrite('res.jpg',img)
cv2.waitKey(0)
cv2.destroyAllWindows()

实战 | 计算器/数码管OCR数字识别(附源码)_paddle_05

注意事项:

1、截取ROI时并没有按照ROI原始大小截取,而是将ROI四周扩大20pixel,这样可以提高识别准确率!


ROI = img[y-20:y+h+20,x-20:x+w+20].copy()

ROI原始大小的识别结果:

实战 | 计算器/数码管OCR数字识别(附源码)_paddle_06

ROI扩大后的识别结果:

实战 | 计算器/数码管OCR数字识别(附源码)_常用函数_07

2、截取ROI之后也可使用PaddleOCR方法识别,识别效果如下:

实战 | 计算器/数码管OCR数字识别(附源码)_深度学习_08



下载1:Pytoch常用函数手册

在「OpenCV与AI深度学习」公众号后台回复:Pytorch常用函数手册即可下载全网第一份Pytorch常用函数手册,涵盖Tensors介绍、基础函数介绍、数据处理函数、优化函数、CUDA编程、多线程处理等十四章章内容。


下载2:145个OpenCV实例应用代码

在「OpenCV与AI深度学习」公众号后台回复:OpenCV145即可下载145个OpenCV实例应用代码(Python和C++双语言实现)。


—THE END—


标签:ROI,识别,20,img,cv2,数码管,源码,result,OCR
From: https://blog.51cto.com/stq054188/5764142

相关文章