文章目录
前言
© Fu Xianjun. All Rights Reserved.
随着人工智能的不断发展,open CV这门技术也越来越重要,很多人都开启了学习open CV,本文介绍了利用open CV识别银行卡的数字。
一、识别的逻辑是什么
- 对模板操作
- 导入图片
- 检测出银行卡数字区域
- 分割数字区域
- 利用模板经行匹配
- 绘制数字
二、使用步骤
1.定义函数识别模板
代码如下:
def sort_contours(cnts,method= "left-to-right"):
reverse= False
i=0
if method=="right-to-left"or method =="bottom-to-top":
reverse= True
if method=="right-to-bottom"or method =="bottom-to-top":
i= 1
boundingBoxes= [cv2.boundingRect(cnt) for cnt in cnts]
(cnts,boundingBoxes)=zip(*sorted(zip(cnts,boundingBoxes),\
key= lambda b:b[1][i],\
reverse=reverse))
return cnts,boundingBoxes
def cv_show(name,img):#定义函数显示图片
cv2.imshow(name,img)
cv2.waitKey(0)
cv2.destroyAllWindows()
template= cv2.imread("muban.png")#读模板
# cv_show("template",template)
template_gray= cv2.cvtColor(template,cv2.COLOR_BGR2GRAY)
#色彩空间转换,变为灰度图
# cv_show("template_gray",template_gray)
ret,template_binary= cv2.threshold(template_gray,127,255,1)
#二值化
cv_show("template_binary",template_binary)
cnts,he= cv2.findContours(template_binary,cv2.RETR_EXTERNAL,\
cv2.CHAIN_APPROX_SIMPLE)
# 查找轮廓
template_rect= cv2.