opencv+python机读卡识别(一)预处理
博客专区 > Digimon 的博客 > 博客详情
opencv+python机读卡识别(一)预处理
Digimon 发表于4个月前
opencv+python机读卡识别(一)预处理
  • 发表于 4个月前
  • 阅读 863
  • 收藏 32
  • 点赞 2
  • 评论 2

腾讯云 学生专属云服务套餐 10元起购>>>   

摘要: 机读卡预处理

第二部分图像切割:https://my.oschina.net/u/3268732/blog/1236344

第三部分选择题识别:https://my.oschina.net/u/3268732/blog/1237819

第四部分数字识别:https://my.oschina.net/u/3268732/blog/1239954

这次的机读卡识别项目来源暑期培训,主要包括内容一张手机拍摄的机读卡位置定位,识别其中选择题模块及少量数字识别,给出样例图片: 机读卡样例

1.环境配置: 环境是python3.5的,大体部分需要配置的是numpy+mlk版本,scipy,来支持opencv,另外辅助以imutils,这个包里面含有4点变换函数以及matplotlib来辅助绘图

import cv2
import matplotlib.pyplot as plt
import imutils
from imutils.perspective import four_point_transform

2.图片预处理 为了方便找出图片的4个顶点,所以需要一次自适应二值化,为了使图片效果更好,所以在二值化之前还加了一层高斯滤波

预处理效果图

#读入图片
image = cv2.imread("test10.jpg")
#转换为灰度图像
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
#高斯滤波
blurred = cv2.GaussianBlur(gray, (3, 3), 0)
#自适应二值化方法
blurred=cv2.adaptiveThreshold(blurred,255,cv2.ADAPTIVE_THRESH_MEAN_C,cv2.THRESH_BINARY,51,2)
'''
adaptiveThreshold函数:第一个参数src指原图像,原图像应该是灰度图。
    第二个参数x指当像素值高于(有时是小于)阈值时应该被赋予的新的像素值
    第三个参数adaptive_method 指: CV_ADAPTIVE_THRESH_MEAN_C 或 CV_ADAPTIVE_THRESH_GAUSSIAN_C
    第四个参数threshold_type  指取阈值类型:必须是下者之一  
                                 •  CV_THRESH_BINARY,
                        • CV_THRESH_BINARY_INV
     第五个参数 block_size 指用来计算阈值的象素邻域大小: 3, 5, 7, ...
    第六个参数param1    指与方法有关的参数。对方法CV_ADAPTIVE_THRESH_MEAN_C 和 CV_ADAPTIVE_THRESH_GAUSSIAN_C, 它是一个从均值或加权均值提取的常数, 尽管它可以是负数。
'''
#这一步可有可无,主要是增加一圈白框,以免刚好卷子边框压线后期边缘检测无果。好的样本图就不用考虑这种问题
blurred=cv2.copyMakeBorder(blurred,5,5,5,5,cv2.BORDER_CONSTANT,value=(255,255,255))
标签: 机读卡识别
共有 人打赏支持
粉丝 31
博文 12
码字总数 10615
评论 (2)
西城决若影琉璃白
厉害

安利~~~~互粉 ~~~~~ studyai.com :bowtie:
Digimon

引用来自“西城决若影琉璃白”的评论

厉害

安利~~~~互粉 ~~~~~ studyai.com :bowtie:

回复@西城决若影琉璃白 : 新开的ai社区么
×
Digimon
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: