基于opencv的人民币冠字号检测
使用了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的人民币冠字号检测相关推荐
- 26个数据分析案例——第一站:基于Python的HBase冠字号查询系统
26个数据分析案例--第一站:基于Python的HBase冠字号查询系统 实验所需环境 • Python: Python 3.x: • Hadoop 2.7.7环境: • HBase 1.3.5: 数 ...
- python 视频人脸替换_Python基于OpenCV实现视频的人脸检测
本文实例为大家分享了基于OpenCV实现视频的人脸检测具体代码,供大家参考,具体内容如下 前提条件 1.摄像头 2.已安装Python和OpenCV3 代码 import cv2 import sys ...
- python视频人脸检测_Python基于OpenCV实现视频的人脸检测
本文实例为大家分享了基于OpenCV实现视频的人脸检测具体代码,供大家参考,具体内容如下 前提条件 1.摄像头 2.已安装Python和OpenCV3 代码 import cv2 import sys ...
- Python基于OpenCV的指针式表盘检测系统(附带源码&技术文档)
1.背景 指针式机械表盘具有安装维护方便.结构简单.防电磁干扰等诸多优点, 目前广泛应用于工矿企业.能源及计量等部门.随着仪表数量的增加及精密仪表技术的发展,人工判读已经不能满足实际应用需求.随着计算 ...
- 基于OpenCV的视频处理 - 人脸检测
一个不知名大学生,江湖人称菜狗 original author: jacky Li Email : 3435673055@qq.com Time of completion:2023.2.7 Las ...
- Python基于Opencv的鱼群密度速度检测系统(源码&教程)
1.研究背景 智慧渔业是大数据.物联网与人工智能等现代信息技术驱动下的渔业发展新模式,是水产养殖业供给侧结构性改革的重要方式,涉及养殖环境监测.生物环境监测与生物状态监测这几大方面的应用与需求.本文从 ...
- 基于OpenCV的视频道路车道检测
基于OpenCV的视频道路车道检测 基于OpenCV的视频道路车道检测 前言 综述 运行方法 车道检测的实现 路面图像二值化 基于透视变换提取车道区域 基于二次多项式拟合车道线 计算曲率半径与车辆的偏 ...
- 基于OpenCV的实战:轮廓检测(附代码解析)
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 利用轮廓检测物体可以看到物体的各种颜色,在这种情况下放置在静态和动 ...
- 基于OpenCV的焊件缺陷检测
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 01. 简介 焊接缺陷是指焊接零件表面出现不规则.不连续的现象.焊 ...
最新文章
- java hashedmap_Java基础 - Map接口的实现类 : HashedMap / LinkedHashMap /TreeMap 的构造/修改/遍历/ 集合视图方法/双向迭代输出...
- k8s edit命令使用示例
- 4.Java中的关键字和标识符
- php中in array循环,在php中in_array的使用方法
- 拓扑排序——杂物(洛谷 P1113)
- linux vmstat_Linux中vmstat命令指南
- POP介绍与使用实践(快速上手动画)
- mysql数据库中的分组查询语句_详解MySQL中的分组查询与连接查询语句
- systemback Linux 系统备份、迁移
- mysql中的cube和rollup_【hive】cube和rollup函数
- 黑马程序员 _银行管理系统
- GPS信号的捕获(PMF+FFT方法)
- MySQL生成36位、32位UUID以及32位大写的UUID
- 用Springboot写饼状图
- java/php/net/python车辆保养管理系统设计
- 【学习笔记】李宏毅2021春机器学习课程第6.2节:生成式对抗网络 GAN(二)
- Windows 通过编辑注册表设置左右手使用习惯更改 Popup 弹出位置
- ASP.NET2.0里的web.config配置接口API(转)
- 计算机excel相关课件,计算机excel教学课件
- 小米应用商店错误日志查看教程(含工具下载)
热门文章
- SAS学习之查找异常值
- NVIDIA Jetson Xavier NX nvpmodel设置
- 医学专业学语文数学英语计算机嚒,2020高考医学专业必须学化学生物的吗(各大选科要求)...
- 计算机主机不通电,电脑主机不通电和电脑主机频繁黑屏的特殊情况的解决方法 --岁月博客提供...
- 2.1 人工智能项目开发与规划
- python中def函数字典_python中的函数def和函数的参数
- 【DevOps】Jenkins:jenkins重置管理员密码
- python mk趋势检验_求问!MK趋势检验和突变检验!
- 无人机机臂上可以绑上杆子,防撞防侧摔
- flutter 动画json_Flutter 中的 JSON 解析