您的位置: 首页 - 站长

wordpress建设的是模板网站吗wordpress邮件发送失败

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

wordpress建设的是模板网站吗,wordpress邮件发送失败,骨科医院网站优化服务商,广州增城做网站目录 一、项目实施 1、自定义函数 2、定位模版图像中的数字 1#xff09;模版图二值化处理 运行结果#xff1a; 2#xff09;展示所有数字 运行结果#xff1a; 3、识别身份证号 1#xff09;灰度图、二值化图展示 运行结果 2#xff09;定位身份证号每一个数…目录 一、项目实施 1、自定义函数 2、定位模版图像中的数字 1模版图二值化处理 运行结果 2展示所有数字 运行结果 3、识别身份证号 1灰度图、二值化图展示 运行结果 2定位身份证号每一个数字 运行结果 3取出身份证号每一个数字 运行结果 4使用模板匹配计算匹配得分 运行结果 二、总结 1、关于图像识别 2、在图像识别任务中通常包括以下几个步骤 3、应用领域 一、项目实施 1、自定义函数 用于展示图像以及获取输入的轮廓图像的排序结果和边界信息 def cv_show(name, image): # 输入两个参数图像名和图像地址即可展示图像cv2.imshow(name, image)cv2.waitKey(0)import cv2 def sort_contours(cnts ,methodleft-to-right): # 输入参数轮廓列表以及method默认排序方式为由左到右reverse False # 布尔值用于控制排序的方向i 0if method right-to-left or method bottom-to-top: # 判断排序方式以此来更改reversereverseTrueif method top-to-bottom or method bottom-to-top:i 1boundingBoxes [cv2.boundingRect© for c in cnts] # 遍历每一个轮廓图取出轮廓图的x、y、w、h将这些信息存放到空列表中# 将列表轮廓和轮廓信息组合成一个元组的列表再通过匿名函数排序这个元组列表排序依据为轮廓数据的第一位x大小降序方式返回两个元素一个是排序后的轮廓列表一个是轮廓的边界框(cnts,boundingBoxes) zip(*sorted(zip(cnts,boundingBoxes),keylambda b:b[1][i],reversereverse))return cnts,boundingBoxes 2、定位模版图像中的数字 1模版图二值化处理 img cv2.imread(shuzi.png) # 导入模版图像 cv_show(img, img) # 展示原图 gray cv2.imread(shuzi.png, 0) # 读取模版图的灰度图 ref cv2.threshold(gray, 150, 255, cv2.THRESH_BINARY_INV)[1] # 对灰度图进行二值化处理灰度值大于150的将其改变为255,小于150的改变为0 cv_show(ref, ref) # 展示二值化图像 运行结果 2展示所有数字

计算轮廓: cv2.findContours()数接受的参数为二值图即黑白的(不是灰度图)

cv2.RETR_EXTERNAL 只检测外轮廓cv2.CHAIN_APPRO_SIMPLE只保留端点坐标

_,refCnts, hierarchy cv2.findContours(ref.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) cv2.drawContours(img, refCnts, -1, (0, 255, 0), 2) # 绘制轮廓 cv_show(img, img) # refCnts sort_contours(refCnts, methodleft-to-right)[0] # 调用自定义函数对轮廓图像进行排序返回排序后图片以及轮廓的边界信息x,y,w,h

保在模板中每个数字对应的像素值

digits {} for (i, c) in enumerate(refCnts): # 使用函数enumerate返回可迭代器的索引和其对应的值(x, y, w, h) cv2.boundingRect© # 计算轮廓的外接矩形返回矩形的边界信息roi ref[y - 2 : y h 2, x - 2 : x w 2] # 裁剪出每个数字对应的图像roi cv2.resize(roi, (57, 88)) # 将裁剪出来的图像进行缩放尺寸变成57,88roi cv2.bitwise_not(roi) # 对每个数字进行按位取反运算即灰度值255变成0,0变成255cv_show(roi,roi) # 展示取反后的图像digits[i] roi # 将每个轮廓存入字典 cv2.destroyAllWindows() # 关闭所有图像 运行结果 3、识别身份证号 1灰度图、二值化图展示 img cv2.imread(./shenfen.jpg) imggimg.copy() cv_show(img, img)gray cv2.imread(./shenfen.jpg, 0) # 灰度图 cv_show(gray, gray)ref cv2.threshold(gray, 120, 255, cv2.THRESH_BINARY_INV)[1] # 二值化 cv_show(ref, ref) 运行结果 2定位身份证号每一个数字

# 计算轮廓: cv2.findContours()数接受的参数为二值图即黑白的(不是灰度图)

# CV2.RETR_EXTERNAL 只检测外轮廓CV2.CHAIN_APPROX_SIMPLE只保留端点坐标

_,refCnts, hierarchy cv2.findContours(ref.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE) # 识别身份证图片所有轮廓 a cv2.drawContours(img.copy(), refCnts, -1, (0, 255, 0), 2) # 绘制轮廓 cv_show(img, a) #

cv2.destroyAllWindows()

#

# 遍历轮廓找到数字部分像素区城

locs [] for (i, c) in enumerate(refCnts): # 遍历每一个轮廓及其对应索引(x, y, w, h) cv2.boundingRect© # 计算外接矩形边界信息# 选择合适的区域根据实际任务来if (y 330 and y 360) and x 220: # 判断轮廓的坐标位置留下身份证号位置的信息此处位置信息需要自己结合原图像素值进行判断locs.append((x, y, w, h)) # 满足上述条件的为身份证号每一个数字的轮廓locs sorted(locs, keylambda x: x[0]) # 对身份证号按照x的值进行进行排序运行结果 3取出身份证号每一个数字 import numpy as npoutput [] for (i, (gX, gY, gW, gH)) in enumerate(locs): # 遍历每一个数字的边界信息及其对应的索引groupOutput []group gray[gY - 2 : gY gH 2, gX - 2 : gX gW 2] # 对每个数字的轮廓适当加一点边界gray为上述的身份证灰度图cv_show(group,group) # 绘制边界# 预处理group cv2.threshold(group, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1] # 二值化每个数字的轮廓图cv_show(group,group)roi cv2.resize(group, (57, 88)) # 对每个数字做缩放处理cv_show(roi,roi) 运行结果 4使用模板匹配计算匹配得分 scores []# 在模板中计算每一个得分for (digit, digitROI) in digits.items(): # 遍历每一个数字模版及其对应的数值# 模板匹配result cv2.matchTemplate(roi, digitROI, cv2.TMCCOEFF) # 对上述识别出来的身份证号图与数字模版进行匹配(, score, _, _) cv2.minMaxLoc(result) # # 找到上述模板匹配相关系数最大值只要score其他返回值忽略scores.append(score) # 将最大值增加到列表# 得到最合适的数字groupOutput.append(str(np.argmax(scores))) # 取出最大值对应的数字存入列表# 绘制每个数字的矩形边框cv2.rectangle(imgg, (gX - 5, gY - 5), (gX gW 5, gY gH 5), (0, 0, 255), 1)# cv2.putText()是OpenCV库中的一个函数用于在图像上添加文本。cv2.putText(imgg, .join(groupOutput), (gX, gY - 15), cv2.FONT_HERSHEY_SIMPLEX, 0.65, (0, 0, 255), 2)output.extend(groupOutput) # 得到结果 #

打印结果

print(Card ID #: {}.format(.join(output))) cv2.imshow(Image, imgg) cv2.waitKey(0) cv2.destroyAllWindows() 运行结果 二、总结 1、关于图像识别 图像识别是计算机视觉领域中的一个重要任务其目标是让计算机能够理解和解释图像中的内容以及进行自动化的图像分析和处理。图像识别技术可以应用于很多领域例如人脸识别、物体检测、车牌识别等。 2、在图像识别任务中通常包括以下几个步骤 数据收集收集大量的带有标注的图像数据用于模型训练和测试。 数据预处理对收集到的图像数据进行预处理例如图像增强、尺寸调整、灰度化等。 特征提取提取图像中的特征信息常用的特征提取方法包括传统的基于手工设计特征的方法和基于深度学习的方法。 模型训练使用标注好的图像数据和提取到的特征信息训练图像识别模型常用的深度学习模型包括卷积神经网络CNN、循环神经网络RNN等。 模型优化对训练好的模型进行优化主要包括模型参数调整、超参数调整等。 模型评估使用测试集进行模型评估评估指标包括准确率、召回率、精确率等。 预测和应用使用训练好的模型进行图像识别预测并将识别结果应用到实际场景中。 3、应用领域 图像识别技术的应用非常广泛例如人脸识别技术可以应用于安全领域、物体检测技术可以应用于智能交通领域等。随着深度学习等技术的发展图像识别技术的准确性和效果也有了很大的提升。但是图像识别任务仍然面临着一些挑战和问题例如对于复杂的场景和模糊的图像可能会有较低的准确率对于大规模数据的处理和模型的训练也需要较大的计算资源和时间。