使用了Tesseract-OCR,需要提前下载安装,下载地址为:tesseract下载地址,下载之后一路next安装即可。随后将其添加到环境变量。在环境变量和系统变量的path中加E:\OCR-python(tesseract的安装目录自行替换)。在cmd命令中执行tesseract -v,若出现以下页面,便是成功了。

以下为python代码部分,由于增加了旋转校正的功能,对于旋转矫正之后的冠字号进行识别可能存在错误,需要进一步优化。

#!/usr/bin/env python3
# -*- coding: utf-8 -*-
import pytesseract
import cv2
import numpy as np#读入图像灰度图
img_o = cv2.imread(r'C:\Users\LesLie\Desktop\test50.jpg',0)
(h,w) = img_o.shape[:2] #获得高度和长度#图像二值化
def otsu(img_o):blur = cv2.GaussianBlur(img_o,(3,3),0) #高斯滤波去除噪声#blur = cv2.equalizeHist(blur) #对比度暗的需要直方图均衡化增强对比度ret,img_OTSU = cv2.threshold(blur,120,255,cv2.THRESH_BINARY+cv2.THRESH_OTSU) #OTSU实现二值化分割return img_OTSU#图像旋转修正
def rotated(img_OTSU):coords = np.column_stack(np.where(img_OTSU>0)) #求得代表纸币的白色点集angle = cv2.minAreaRect(coords)[-1] #求出最小外界矩形,返回的参数有三个:矩形的中心点、矩形的长和宽、矩形的旋转角度#print(angle)#确定用来修正的旋转角度if angle == 90:angle=0if angle < -45:angle = -(90+angle)if angle > 45:angle = 90-angleelse:angle = -angleM = cv2.getRotationMatrix2D((w/2,h/2),angle,1.0)  #计算得到二维旋转矩阵img_rotated = cv2.warpAffine(img_OTSU,M,(w,h),flags = cv2.INTER_CUBIC,borderMode = cv2.BORDER_REPLICATE) #仿射变换实现旋转修正return img_rotated#纸币裁剪
def cut(img_rotated):points = np.argwhere(img_rotated==255) #找到白色像素位置points = np.fliplr(points) #将得到的行列左边转换为(x,y)坐标x,y,w,h = cv2.boundingRect(points) #创建最小外接矩形,(x,y)为左上角起始点坐标,w和h为长度和高度img_cut = img_rotated[y:y+h, x:x+w] #裁剪return img_cut#字符区域定位和提取
def local(img_cut):img_resize = cv2.resize(img_cut,(1000,800),interpolation=cv2.INTER_CUBIC) #将纸币统一为1000x800的图像img_local = img_resize[550:650,15:245]return img_local#形态学处理
def result(img_local):s = np.ones((3,3),np.uint8) #结构元img_erode = cv2.erode(img_local,s) #膨胀运算return img_erode#字符识别
def recog(img_erode):code = pytesseract.image_to_string(img_erode) #调用pytesseract进行字符识别code = ''.join(code.split()) #消除字符串之间的空格print(code)return codeimg_OTSU = otsu(img_o)
img_rotated = rotated(img_OTSU)
img_cut = cut(img_rotated)
img_local = local(img_cut)
img_erode = result(img_local)
code = recog(img_erode)#cv2.imshow("Original Image",img_o)
#cv2.imshow("Binarization",img_OTSU)
#cv2.imshow("Rotation Correction",img_rotated)
cv2.imshow("Final Result",img_erode)
cv2.waitKey(0)

以下为识别结果:

python小白的课设任务,水平不高,欢迎各位批评指正

基于opencv的人民币冠字号检测相关推荐

  1. 26个数据分析案例——第一站:基于Python的HBase冠字号查询系统

    26个数据分析案例--第一站:基于Python的HBase冠字号查询系统 实验所需环境 • Python: Python 3.x: • Hadoop 2.7.7环境: • HBase 1.3.5: 数 ...

  2. python 视频人脸替换_Python基于OpenCV实现视频的人脸检测

    本文实例为大家分享了基于OpenCV实现视频的人脸检测具体代码,供大家参考,具体内容如下 前提条件 1.摄像头 2.已安装Python和OpenCV3 代码 import cv2 import sys ...

  3. python视频人脸检测_Python基于OpenCV实现视频的人脸检测

    本文实例为大家分享了基于OpenCV实现视频的人脸检测具体代码,供大家参考,具体内容如下 前提条件 1.摄像头 2.已安装Python和OpenCV3 代码 import cv2 import sys ...

  4. Python基于OpenCV的指针式表盘检测系统(附带源码&技术文档)

    1.背景 指针式机械表盘具有安装维护方便.结构简单.防电磁干扰等诸多优点, 目前广泛应用于工矿企业.能源及计量等部门.随着仪表数量的增加及精密仪表技术的发展,人工判读已经不能满足实际应用需求.随着计算 ...

  5. 基于OpenCV的视频处理 - 人脸检测

    一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055@qq.com  Time of completion:2023.2.7 Las ...

  6. Python基于Opencv的鱼群密度速度检测系统(源码&教程)

    1.研究背景 智慧渔业是大数据.物联网与人工智能等现代信息技术驱动下的渔业发展新模式,是水产养殖业供给侧结构性改革的重要方式,涉及养殖环境监测.生物环境监测与生物状态监测这几大方面的应用与需求.本文从 ...

  7. 基于OpenCV的视频道路车道检测

    基于OpenCV的视频道路车道检测 基于OpenCV的视频道路车道检测 前言 综述 运行方法 车道检测的实现 路面图像二值化 基于透视变换提取车道区域 基于二次多项式拟合车道线 计算曲率半径与车辆的偏 ...

  8. 基于OpenCV的实战:轮廓检测(附代码解析)

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 利用轮廓检测物体可以看到物体的各种颜色,在这种情况下放置在静态和动 ...

  9. 基于OpenCV的焊件缺陷检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 01. 简介 焊接缺陷是指焊接零件表面出现不规则.不连续的现象.焊 ...

最新文章

  1. java hashedmap_Java基础 - Map接口的实现类 : HashedMap / LinkedHashMap /TreeMap 的构造/修改/遍历/ 集合视图方法/双向迭代输出...
  2. k8s edit命令使用示例
  3. 4.Java中的关键字和标识符
  4. php中in array循环,在php中in_array的使用方法
  5. 拓扑排序——杂物(洛谷 P1113)
  6. linux vmstat_Linux中vmstat命令指南
  7. POP介绍与使用实践(快速上手动画)
  8. mysql数据库中的分组查询语句_详解MySQL中的分组查询与连接查询语句
  9. systemback Linux 系统备份、迁移
  10. mysql中的cube和rollup_【hive】cube和rollup函数
  11. 黑马程序员 _银行管理系统
  12. GPS信号的捕获(PMF+FFT方法)
  13. MySQL生成36位、32位UUID以及32位大写的UUID
  14. 用Springboot写饼状图
  15. java/php/net/python车辆保养管理系统设计
  16. 【学习笔记】李宏毅2021春机器学习课程第6.2节:生成式对抗网络 GAN(二)
  17. Windows 通过编辑注册表设置左右手使用习惯更改 Popup 弹出位置
  18. ASP.NET2.0里的web.config配置接口API(转)
  19. 计算机excel相关课件,计算机excel教学课件
  20. 小米应用商店错误日志查看教程(含工具下载)

热门文章

  1. SAS学习之查找异常值
  2. NVIDIA Jetson Xavier NX nvpmodel设置
  3. 医学专业学语文数学英语计算机嚒,2020高考医学专业必须学化学生物的吗(各大选科要求)...
  4. 计算机主机不通电,电脑主机不通电和电脑主机频繁黑屏的特殊情况的解决方法 --岁月博客提供...
  5. 2.1 人工智能项目开发与规划
  6. python中def函数字典_python中的函数def和函数的参数
  7. 【DevOps】Jenkins:jenkins重置管理员密码
  8. python mk趋势检验_求问!MK趋势检验和突变检验!
  9. 无人机机臂上可以绑上杆子,防撞防侧摔
  10. flutter 动画json_Flutter 中的 JSON 解析