标签:temp img width python cv2 银行卡 投影 opencv range
文章目录
前言
在opencv 和python 作为编程语言的基础上实现银行卡号的识别和分割
提示:以下是本篇文章正文内容,下面案例可供参考
一、银行卡号的识别
[银行卡号的识别所用到的一切都在这篇博客中](https://blog.csdn.net/qq_47566416/article/details/112547470)二、银行卡号的分割
1.引入库
部分代码如下(示例):
import cv2
import numpy as np
def image_process(file_path):
img = cv2.imread(file_path, 0)
blur = cv2.GaussianBlur(img, (3, 3), 0) #高斯模糊
ret, binary = cv2.threshold(blur, 50, 255, cv2.THRESH_BINARY) #二值化
kernel = np.ones((1, 50), np.uint8)
erosion = cv2.erode(binary, kernel) # 膨胀
dilation = cv2.dilate(erosion, kernel) # 腐蚀
contours, hierarchy = cv2.findContours(dilation, cv2.RETR_TREE, cv2.CHAIN_APPROX_SIMPLE)
sp = dilation.shape
x, y, w, h = 0, 0, 0, 0
for i in range(0, len(contours)):
x, y, w, h = cv2.boundingRect(contours[i])
if h > sp[0]*0.05 and w > sp[1]*0.5 and y > sp[0]*0.2 and y < sp[0]*0.8 and w/h > 5:
img = binary[y:y + h, x:x + w]
break
return num_split(img)
def num_split(img):
height, width = img.shape
v = [0] * width
z = [0] * height
a = 0
# 垂直投影:统计并存储每一列的黑点数
for x in range(0, width):
for y in range(0, height):
if img[y, x] == 255:
continue
else:
a = a + 1
v[x] = a
a = 0
# 创建空白图片,绘制垂直投影图
l = len(v)
emptyImage = np.full((height, width), 255, dtype=np.uint8)
for x in range(0, width):
for y in range(0, v[x]):
emptyImage[y, x] = 0
#分割字符
Position = []
Wstart = 0
Wend = 0
W_Start = 0
W_End = 0
v[0], v[len(v)-1] = 0, 0
for j in range(len(v)):
if v[j] > 0 and Wstart == 0:
W_Start = j
Wstart = 1
Wend = 0
if v[j] <= 0 and Wstart == 1:
W_End = j
Wstart = 0
Wend = 1
if Wend == 1:
Position.append([W_Start, 0, W_End, height])
Wend = 0
data = []
for m in range(len(Position)):
temp_img = img[Position[m][1]:Position[m][3], Position[m][0]:Position[m][2]]
h1, w1 = temp_img.shape
if w1 > h1:
return []
temp_img = cv2.resize(temp_img, (16, 16))
h0, w0 = temp_img.shape
temp_data = []
for hx in range(h0):
for wx in range(w0):
temp_data.append(float(temp_img[hx, wx]))
data.append(temp_data)
return data
2.读入数据
代码如下(示例):
银行卡照片来源于网上
3.代码实现结果
总结
垂直投影法就是利用二值化后的照片的黑白间隔来分离出字符。
鸣谢
https://blog.csdn.net/weixin_43988887/article/details/90214840
标签:temp,img,width,python,cv2,银行卡,投影,opencv,range 来源: https://blog.csdn.net/qq_47566416/article/details/112689480
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。