Python开发之基于模板匹配的信用卡数字识别功能Python开发之基于模板匹配的信用卡数字识别功能
主要介绍了基于模板匹配的信用卡数字识别功能,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考
下
环境介绍环境介绍
Python 3.6 + OpenCV 3.4.1.15Python 3.6 + OpenCV 3.4.1.15
原理介绍原理介绍
首先,提取出模板中每一个数字的轮廓,再对信用卡图像进行处理,提取其中的数字部分,将该部分数字与模板进行匹配,即可得到结果。
模板展示
完整代码
# !/usr/bin/env python
# —*— coding: utf-8 —*—
# @Time: 2020/1/11 14:57
# @Author: Martin
# @File: utils.py
# @Software:PyCharm
import cv2
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 == 'top-to-bottom' or method == 'bottom-to-top':
i = 1
boundingboxes = [cv2.boundingRect(c) for c in cnts]
(cnts, boundingboxes) = zip(*sorted(zip(cnts, boundingboxes), key=lambda b: b[1][i], reverse=reverse))
return cnts, boundingboxes
def resize(image, width=None, height=None, inter=cv2.INTER_AREA):
(h, w) = image.shape[:2]
if width is None and height is None:
return image
if width is None:
r = height / float(h)
dim = (int(w * r), height)
else:
r = width / float(w)
dim = (width, int(h * r))
resized = cv2.resize(image, dim, interpolation=inter)