Advertisement

图像处理实例分析之一:信用卡数字识别

  •  5星
  •     浏览量: 0
  •     大小:None
  •      文件类型:None


简介:
本实例深入剖析了信用卡数字识别技术,通过图像处理方法提高数字识别精度,为金融行业提供高效、准确的数据处理方案。 首先处理模板图像: 1. 读取并转换为灰度图: ```python tempalte_img = cv.imread(E:/opencv/picture/ocr_a_reference.png) tempalte_gray = cv.cvtColor(tempalte_img, cv.COLOR_BGR2GRAY) ``` 2. 应用二值化处理: ```python tempalte_thres = cv.threshold(tempalte_gray, 0, 255, cv.THRESH_OTSU | cv.THRESH_BINARY_INV)[1] ``` 3. 寻找轮廓并绘制在模板图像上: ```python temp_a, tempalte_contours, temp_b = cv.findContours(tempalte_thres.copy(), cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE) cv.drawContours(tempalte_img, tempalte_contours, -1, (0, 255, 0), 2) ``` 4. 排序轮廓并提取数字区域: ```python tempalte_contours = contours.sort_contours(tempalte_contours, method=left-to-right)[0] digits = {} for (i, c) in enumerate(tempalte_contours): x, y, w, h = cv.boundingRect(c) tempalte_roi = tempalte_thres[y:y + h, x:x + w] tempalte_roi = cv.resize(tempalte_roi, (57, 88)) digits[i] = tempalte_roi ``` 接下来,处理银行卡图像: 1. 调整大小和转换为灰度图: ```python image = cv.imread(E:/opencv/picture/credit_card_02.png) image = myutils.resize(image, width=300) image_gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY) ``` 2. 应用形态学操作以增强图像特征: ```python rectkernel = cv.getStructuringElement(cv.MORPH_RECT,(9,3)) squrkernel = cv.getStructuringElement(cv.MORPH_RECT,(5,5)) image_tophat= cv.morphologyEx(image_gray,cv.MORPH_TOPHAT,rectkernel) image_close = cv.morphologyEx(image_tophat,cv.MORPH_CLOSE,rectkernel) cv.imshow(image_tophat,image_tophat) ``` 3. 二值化处理: ```python image_thres= cv.threshold(image_close,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)[1] image_contours = cv.findContours(image_thres.copy(),cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE)[1] locs = [] for (n, con) in enumerate(image_contours): gx, gy, gw, gh = cv.boundingRect(con) ar = gw / float(gh) if ar > 2.5 and ar < 4.0: if (gw > 40 and gw < 55) and (gh > 10 and gh < 20): locs.append((gx, gy, gw, gh)) ``` 4. 排序找到的轮廓: ```python locs = sorted(locs, key=lambda x:x[0]) output = [] for (i,(x,y,w,h)) in enumerate(locs): groupOutput = [] group = image_gray[y-5:y+h+5,x-5:x+w+5] group = cv.threshold(group,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)[1] digcnts = cv.findContours(group.copy(),cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE)[1] digcnts = contours.sort_contours(digcnts,method=left-to-right)[0] for c in digcnts: gx, gy, gw, gh = cv.boundingRect(c) roi = group[gy:gy+gh,gx:gx+gw] roi = cv.resize(roi,(57,88)) scores = [] for (digit,digitROI) in digits.items(): result = cv.matchTemplate(roi, digitROI, cv.TM_CCOEFF_NORMED) _, score, _, _ = cv.minMaxLoc(result) scores.append(score) groupOutput.append(str(np.argmax(scores))) output.extend(groupOutput) ``` 5. 显示结果: ```python for (i,(x,y,w,h)) in enumerate(locs): cv.rectangle(image, (x - 5, y - 5), (x + w + 5, y + h + 5), (

全部评论 (0)

还没有任何评论哟~
客服
客服
  • 优质
    本实例深入剖析了信用卡数字识别技术,通过图像处理方法提高数字识别精度,为金融行业提供高效、准确的数据处理方案。 首先处理模板图像: 1. 读取并转换为灰度图: ```python tempalte_img = cv.imread(E:/opencv/picture/ocr_a_reference.png) tempalte_gray = cv.cvtColor(tempalte_img, cv.COLOR_BGR2GRAY) ``` 2. 应用二值化处理: ```python tempalte_thres = cv.threshold(tempalte_gray, 0, 255, cv.THRESH_OTSU | cv.THRESH_BINARY_INV)[1] ``` 3. 寻找轮廓并绘制在模板图像上: ```python temp_a, tempalte_contours, temp_b = cv.findContours(tempalte_thres.copy(), cv.RETR_EXTERNAL, cv.CHAIN_APPROX_SIMPLE) cv.drawContours(tempalte_img, tempalte_contours, -1, (0, 255, 0), 2) ``` 4. 排序轮廓并提取数字区域: ```python tempalte_contours = contours.sort_contours(tempalte_contours, method=left-to-right)[0] digits = {} for (i, c) in enumerate(tempalte_contours): x, y, w, h = cv.boundingRect(c) tempalte_roi = tempalte_thres[y:y + h, x:x + w] tempalte_roi = cv.resize(tempalte_roi, (57, 88)) digits[i] = tempalte_roi ``` 接下来,处理银行卡图像: 1. 调整大小和转换为灰度图: ```python image = cv.imread(E:/opencv/picture/credit_card_02.png) image = myutils.resize(image, width=300) image_gray = cv.cvtColor(image,cv.COLOR_BGR2GRAY) ``` 2. 应用形态学操作以增强图像特征: ```python rectkernel = cv.getStructuringElement(cv.MORPH_RECT,(9,3)) squrkernel = cv.getStructuringElement(cv.MORPH_RECT,(5,5)) image_tophat= cv.morphologyEx(image_gray,cv.MORPH_TOPHAT,rectkernel) image_close = cv.morphologyEx(image_tophat,cv.MORPH_CLOSE,rectkernel) cv.imshow(image_tophat,image_tophat) ``` 3. 二值化处理: ```python image_thres= cv.threshold(image_close,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)[1] image_contours = cv.findContours(image_thres.copy(),cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE)[1] locs = [] for (n, con) in enumerate(image_contours): gx, gy, gw, gh = cv.boundingRect(con) ar = gw / float(gh) if ar > 2.5 and ar < 4.0: if (gw > 40 and gw < 55) and (gh > 10 and gh < 20): locs.append((gx, gy, gw, gh)) ``` 4. 排序找到的轮廓: ```python locs = sorted(locs, key=lambda x:x[0]) output = [] for (i,(x,y,w,h)) in enumerate(locs): groupOutput = [] group = image_gray[y-5:y+h+5,x-5:x+w+5] group = cv.threshold(group,0,255,cv.THRESH_BINARY|cv.THRESH_OTSU)[1] digcnts = cv.findContours(group.copy(),cv.RETR_EXTERNAL,cv.CHAIN_APPROX_SIMPLE)[1] digcnts = contours.sort_contours(digcnts,method=left-to-right)[0] for c in digcnts: gx, gy, gw, gh = cv.boundingRect(c) roi = group[gy:gy+gh,gx:gx+gw] roi = cv.resize(roi,(57,88)) scores = [] for (digit,digitROI) in digits.items(): result = cv.matchTemplate(roi, digitROI, cv.TM_CCOEFF_NORMED) _, score, _, _ = cv.minMaxLoc(result) scores.append(score) groupOutput.append(str(np.argmax(scores))) output.extend(groupOutput) ``` 5. 显示结果: ```python for (i,(x,y,w,h)) in enumerate(locs): cv.rectangle(image, (x - 5, y - 5), (x + w + 5, y + h + 5), (
  • 、二):阶段
    优质
    本系列示例探讨汉字识别技术中的图像预处理阶段,涵盖去噪、归一化及二值化等关键步骤,为后续字符分割与特征提取打下坚实基础。 该演示展示了在识别阶段之前进行图像预处理的一些示例。第一个例子包含了一些常用的图像处理命令,通常用于预处理工作;第二个例子则介绍了如何使用简单的命令来自动化图像处理过程,特别是生成神经网络训练数据集以供识别目的使用。关于更多信息的获取途径未在此提及。需要注意的是,有关识别阶段的具体内容将在后续的示例中进行上传展示。
  • 验中的OpenCV答题选项
    优质
    本研究探讨了在数字图像处理实验中利用OpenCV进行答题卡选项自动识别的技术方法,旨在提高评分效率和准确性。 数字图像处理实验中使用OpenCV进行答题卡选项识别。
  • 中的人脸技术__
    优质
    本文将探讨在数字图像处理领域中人脸识别技术的应用与发展。通过分析现有算法和技术,我们将深入了解如何提高人脸识别的速度和准确性,并讨论其实际应用场景与未来发展趋势。 数字图像处理课程第三次实验作业——人脸识别
  • 优质
    本实验为《数字图像处理》课程系列实验之一,重点探讨了图像增强、滤波及特征提取等技术,通过编程实践加深学生对理论知识的理解与应用能力。 数字图像处理实验六: 1. 减少图像中的灰度级数: (a)编写一个计算机程序,能够将图像的256个灰度级别减少到任意指定为整数幂2的数量(例如2、4、8等)。所需的灰度级数量应作为程序输入。 (b)使用提供的图2.21(a)进行实验,并尝试重现该书中展示的结果。 2. 通过像素复制缩放和缩小图像: (a)编写一个计算机程序,能够根据整数倍因子放大或缩小图像。忽略别名效应的影响。 (b)下载并应用此程序于图2.19(a),将其从原始的1024 x 1024像素尺寸缩小到256 x 256像素。 (c)使用相同的程序将上一步骤获得的小图像再放大回初始大小(即,1024 x 1024)。分析并解释这种操作前后出现的变化和差异的原因。 3. 使用双线性插值法缩放和缩小图像: (a)编写一个计算机程序,能够利用双线性插值技术来调整图像的尺寸。此程序需要接收目标宽度和高度作为输入参数。 (b)使用图2.19(a)进行实验,并将该图片从原来的1024 x 1024像素缩小至256 x 256像素。 (c)再次利用你的程序,把之前获得的小尺寸图像放大回最初的大小(即,1024 x 1024)。对比两次操作的结果,并解释其中的差异。
  • LabVIEW
    优质
    《LabVIEW图像识别实例分析》一书深入浅出地介绍了如何使用LabVIEW软件进行图像处理和模式识别。通过丰富的案例,读者可以掌握从基础到高级的各种图像识别技术。适合工程技术人员及高校师生阅读学习。 LabVIEW图像识别功能教程基于Vision工具包;使用LabVIEW对图像进行分析处理的方法宝典。
  • yy.rar_yy___英文_
    优质
    本资源包提供了一系列用于图像处理和英文字母识别的技术文档与代码示例,特别适用于开发基于图像的英文字母自动识别系统。 在图像处理领域,可以使用神经网络方法来识别英文字母。这种方法通过对字母进行训练和学习,能够高效地完成字母的识别任务。
  • 基于的文
    优质
    本研究聚焦于利用先进的数字图像处理技术实现高效、准确的文字识别应用,涵盖预处理、特征提取及机器学习模型训练等关键技术环节。 本段落主要介绍了模式识别中的文字识别原理,并对分类器的具体实现进行了详细剖析。此外,还系统地列举了常见的文字识别方法。
  • 号MATLAB_人脸_人脸检测_matlab去噪___
    优质
    本项目聚焦于利用MATLAB进行数字信号与图像处理的研究,涵盖人脸识别、人脸检测及图像去噪等关键技术,探索高效能的数字图像处理方法。 该算法实现了人脸识别的鉴别以及图像去噪处理。