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

网站交互效果开个网站平台要多少钱

网站交互效果,开个网站平台要多少钱,南和网站建设,做网站的步骤的文本目录 一、项目介绍 二、数据材料介绍 1、模板图片(1张) 2、需要处理的信用卡图片(5张) 三、实现过程 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.py"""import cv2# 排序函数
def sort_contours(cnts, method='left-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, key=lambda x: x[1][axis_index], reverse=reverse)# 解包排序后的轮廓和边界框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, width=None, height=None, inter=cv2.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, interpolation=inter)#参数interpolation指定了在图像大小调整过程中如何处理像素插值的方法。cv2.INTER_AREA具体意味着使用面积插值方法。return resized

 

2、设置命令行参数

  • --image为信用卡图片
  • --template为模板图片
ap = argparse.ArgumentParser()
ap.add_argument('-i','--image',required=True,help='')
ap.add_argument('-t','--template',required=True,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,method="left-to-right")[0]
digits = {}
# 获取每个数字的信息
for (i,c) in enumerate(refCnts):(x,y,w,h) = cv2.boundingRect(c)roi = ref[y:y+h,x:x+w]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,width=300)
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,key=lambda x: x[0])

 

 

5、模板匹配 

  • 将信用卡图像中的每个数字区域与模板中的数字进行匹配,找到最相似的数字。

  • 根据匹配结果识别信用卡号码。

output = []
# 遍历每一组数字
for (i,(gx,gy,gw,gh)) in enumerate(locs):groupOutput = []group = gray[gy-5:gy+gh+5,gx-5:gx+gw+5]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:y+h,x:x+w]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, mask=None)score = cv2.minMaxLoc(result)[1]scores.append(score)# 得到匹配分数最大值的索引groupOutput.append(str(np.argmax(scores)))cv2.rectangle(image,(gx-5,gy-5),(gx+gw+5,gy+gh+5),(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.hengruixuexiao.com/news/10046.html

相关文章:

  • 球类网站如何做宣传百度指数平台
  • html个人博客完整代码黑河seo
  • 动漫做a视频网站有哪些百度软件中心下载安装
  • 广州有建网站的公司吗整站排名服务
  • 工商企业查询快速灰色seo推广
  • 做六个网站静态页多少钱百度知道官网入口
  • 传奇购买域名做网站巨量算数数据分析入口
  • 企业的网站建设文章windows优化大师是自带的吗
  • 建设银行人才招聘网站网络营销策划书800字
  • 区块链网站用vue.js做怎么样怎么在百度上推广产品
  • 做淘宝链接的网站游戏app拉新平台
  • 邢台做移动网站网站权重查询接口
  • 萍乡建网站爱站网权重查询
  • 餐饮网站建设服务器360建站和凡科哪个好
  • 如何做一个二维码相册点击宝seo
  • 法律咨询网站开发网络营销模式包括哪些
  • 怎么做新的网站怎样弄一个自己的平台
  • 怎么搭建个人网站电脑做服务器南宁网站建设服务公司
  • 网站验证码怎么做新闻发布平台
  • 地方政府网站建设的建议seo优化seo外包
  • 网站为什么百度搜不到了行业关键词一览表
  • 西蔵自治区建设厅网站友情链接怎么互换
  • 客户问 你们网站怎么做的开发一个小程序一般需要多少钱呢
  • 邗江区网站建设套餐优化软件seo排名
  • 深圳建设门户网站百度官方网址
  • 商务网站建设与维护试题网络培训总结
  • 佛山专业网站设计方案郑州seo使用教程
  • 揭阳网站制作个人在线做网站免费
  • 吉林市哪有做网站的做直销去哪里找客户
  • 苏州相城区做网站公司西安网络优化培训机构公司