当前位置: 首页 > news >正文

天津市市建设与管理局网站自己创建一个网页

天津市市建设与管理局网站,自己创建一个网页,设计科技有限公司,网站电话素材目录 一、项目介绍 二、数据材料介绍 1、模板图片#xff08;1张#xff09; 2、需要处理的信用卡图片#xff08;5张#xff09; 三、实现过程 1、导入需要用到的库 2、设置命令行参数 3、模板图像中数字的定位处理 4、信用卡图像处理 5、模板匹配 四、总结 一…目录 一、项目介绍 二、数据材料介绍 1、模板图片1张 2、需要处理的信用卡图片5张  三、实现过程 1、导入需要用到的库 2、设置命令行参数 3、模板图像中数字的定位处理 4、信用卡图像处理 5、模板匹配  四、总结 一、项目介绍 项目的主要目标是实现信用卡号码和类型的识别。通过图像处理技术从信用卡图像中提取出卡号将每个数字与模板数字进行比对从而得出信用卡号码。并根据卡号的第一位数字判断信用卡的类型。 二、数据材料介绍 1、模板图片1张 2、需要处理的信用卡图片5张  三、实现过程 1、导入需要用到的库 import numpy as np import argparse import cv2 import myutils 其中myutils模块为自己编写的工具模块里面包含了对轮廓进行排序的函数以及自动变换图片大小的函数内容如下 myutil.pyimport cv2# 排序函数 def sort_contours(cnts, methodleft-to-right):# 初始化排序方向和索引reverse Falseaxis_index 0 # 默认按 x 轴排序从左到右或从右到左# 根据排序方法设置排序方向和索引if method right-to-left or method bottom-to-top:reverse True # 反向排序if method top-to-bottom or method bottom-to-top:axis_index 1 # 按 y 轴排序从上到下或从下到上# 计算每个轮廓的边界框bounding_boxes [cv2.boundingRect(c) for c in cnts]# 将轮廓和边界框组合在一起combined list(zip(cnts, bounding_boxes))# 根据边界框的坐标进行排序sorted_combined sorted(combined, keylambda x: x[1][axis_index], reversereverse)# 解包排序后的轮廓和边界框sorted_cnts [item[0] for item in sorted_combined]sorted_bounding_boxes [item[1] for item in sorted_combined]return sorted_cnts, sorted_bounding_boxes# 变换图片大小的函数 def resize(image, widthNone, heightNone, intercv2.INTER_AREA):dim None(h, w) image.shape[:2]if width is None and height is None:return imageif 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, interpolationinter)#参数interpolation指定了在图像大小调整过程中如何处理像素插值的方法。cv2.INTER_AREA具体意味着使用面积插值方法。return resized 2、设置命令行参数 --image为信用卡图片--template为模板图片 ap argparse.ArgumentParser() ap.add_argument(-i,--image,requiredTrue,help) ap.add_argument(-t,--template,requiredTrue,help) args vars(ap.parse_args())# 信用卡号码开头对应信用卡的类型 FIRST_NUMBER {3:American Express,4:Visa,5:MasterCard,6:Discover Card} # 定义显示图片函数 def cv_show(name, image):cv2.imshow(name, image)cv2.waitKey(0) 3、模板图像中数字的定位处理 读取模板图像包含 0-9 的数字。 对模板图像进行灰度化、二值化处理。 使用轮廓检测提取每个数字的轮廓并将每个数字裁剪出来保存为模板。 模板图像中数字的定位处理 # img为模板图像 img cv2.imread(args[template]) cv_show(img,img) # 灰度图 ref cv2.cvtColor(img,cv2.COLOR_BGR2GRAY) cv_show(ref,ref) # 二值化 ref cv2.threshold(ref,10,255,cv2.THRESH_BINARY_INV)[1] cv_show(ref,ref) # 轮廓 refCnts cv2.findContours(ref.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[1] cv2.drawContours(img,refCnts,-1,(0,0,255),2) cv_show(img,img) # 对轮廓进行从左到右排序 refCnts myutils.sort_contours(refCnts,methodleft-to-right)[0] digits {} # 获取每个数字的信息 for (i,c) in enumerate(refCnts):(x,y,w,h) cv2.boundingRect(c)roi ref[y:yh,x:xw]roi cv2.resize(roi,(57,88))digits[i] roicv_show(roi,roi) print(len(digits)) 4、信用卡图像处理 读取信用卡图像。 对信用卡图像进行灰度化、顶帽操作去除背景、闭操作将数字连在一起、自适应二值化等处理。 使用轮廓检测找到信用卡上的数字区域。 信用卡的图像处理 image cv2.imread(args[image]) cv_show(image,image) # 变换图片大小 image myutils.resize(image,width300) gray cv2.cvtColor(image,cv2.COLOR_BGR2GRAY) cv_show(gray,gray) # 设置核 rectKernel cv2.getStructuringElement(cv2.MORPH_RECT,(9,3)) sqKernel cv2.getStructuringElement(cv2.MORPH_RECT,(5,5)) # 顶帽 tophat cv2.morphologyEx(gray,cv2.MORPH_TOPHAT,rectKernel) # 开运算 open cv2.morphologyEx(gray,cv2.MORPH_OPEN,rectKernel) cv_show(open,open) cv_show(tophat,tophat)# 找数字边框 # 闭操作将数字连在一起 closeX cv2.morphologyEx(tophat,cv2.MORPH_CLOSE,rectKernel) cv_show(closeX,closeX)# 自适应二值化 thresh cv2.threshold(closeX,0,255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1] cv_show(thresh,thresh)# 闭操作 thresh cv2.morphologyEx(thresh,cv2.MORPH_CLOSE,sqKernel) cv_show(thresh1,thresh)# 计算轮廓 threshCnts cv2.findContours(thresh.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[1] cnts threshCnts cur_img image.copy() cv2.drawContours(cur_img,cnts,-1,(0,0,255),3) cv_show(img,cur_img)# 遍历轮廓找到数字部分 locs [] # 存放每组数字的x,y,w,h for (i,c) in enumerate(cnts):(x,y,w,h) cv2.boundingRect(c)ar w/float(h)if 2.5 ar 4.0:if (40 w 55) and (10 h 20):locs.append((x,y,w,h)) locs sorted(locs,keylambda x: x[0]) 5、模板匹配  将信用卡图像中的每个数字区域与模板中的数字进行匹配找到最相似的数字。 根据匹配结果识别信用卡号码。 output [] # 遍历每一组数字 for (i,(gx,gy,gw,gh)) in enumerate(locs):groupOutput []group gray[gy-5:gygh5,gx-5:gxgw5]cv_show(group,group)group cv2.threshold(group,0,255,cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]cv_show(group,group)# 寻找每组数字的轮廓并根据顺序放入digitCntsdigitCnts cv2.findContours(group.copy(),cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[1]digitCnts myutils.sort_contours(digitCnts)[0]for c in digitCnts:(x,y,w,h) cv2.boundingRect(c)roi group[y:yh,x:xw]roi cv2.resize(roi,(57,88))cv_show(roi,roi)模板匹配计算得分scores []# 在模板中计算每一个得分for (digit,digitROI) in digits.items():# 模板匹配result cv2.matchTemplate(roi,digitROI,cv2.TM_CCOEFF)# minVal, maxVal, minLoc, maxLoc cv2.minMaxLoc(src, maskNone)score cv2.minMaxLoc(result)[1]scores.append(score)# 得到匹配分数最大值的索引groupOutput.append(str(np.argmax(scores)))cv2.rectangle(image,(gx-5,gy-5),(gxgw5,gygh5),(0,0,255),1)cv2.putText(image,.join(groupOutput),(gx,gy-15),cv2.FONT_HERSHEY_SIMPLEX,0.65,(0,255,0),2)output.extend(groupOutput)# 打印结果 print(信用卡类型:{}.format(FIRST_NUMBER[output[0]])) print(信用卡号码:{}.format(.join(output))) cv_show(Image,image) 四、总结 这个项目通过图像处理和模板匹配技术实现了信用卡号码的自动识别。它展示了如何结合 OpenCV 和 Python 实现一个实用的图像处理应用。
http://www.w-s-a.com/news/570386/

相关文章:

  • 哪个全球购网站做的好汉中门户网官网
  • 网站建设有哪几种wordpress 项目选项
  • 成都网站建设开发公司哪家好验证码插件 wordpress
  • 企业网站设计要点泰州市网站制作公司
  • 网站用户运营北京官方网站怎么做
  • 农业门户网站开发做首图的网站
  • wordpress 素材站模板怎么制作网站程序
  • 做ps合成的网站wordpress付费查看下载主题
  • 个人网站建设完整教程wordpress服务器搬迁
  • wordpress.主题广州 网站优化
  • 手机版网站怎样做推广如何用asp做视频网站
  • dede 网站打开慢七牛云 微信 打开 wordpress
  • 哪里网站建设公司比较好教育培训类网站模板
  • 中国建设银行官网首页网站wordpress小工具不能完全显示
  • 企业网站的开发流程是什么网站开发怎么销售
  • 现在网站还用asp做男科医院哪家好一些
  • 服装设计网站素材郑州汉狮做网站网络公司
  • 宜州做网站做仿制网站
  • 中山营销型网站厦门工程建设招聘信息网站
  • 网站开发 外包空心找回微信
  • 长沙市网站推广多少钱网站开发流程图和介绍
  • 网站后缀net施工企业自建自用的工程可以不进行招标是否正确
  • 鄂尔多斯市住房和城乡建设厅网站帮别人做网站赚钱6
  • 宜选科技就是帮人做网站动漫制作专业主修课程
  • 怎么做网站免费的教程温州捷创网站建设
  • 做免费推广的网站有哪些深圳华强北最新消息
  • 电子商务网站建设规划开题报告桂林漓江景区游玩攻略
  • 程序员参与洗钱网站建设做视频网站需要多少钱
  • 网站建设背景是什么企业邮箱怎么写
  • 山东省建设资格中心网站iis wordpress安装教程