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

cod建站平台wordpress download_link

cod建站平台,wordpress download_link,漂亮全屏网站,建设网站需要哪些费用目录 1#xff0c;主要原理以及函数介绍 全部代码#xff0c;以 2 #xff0c; 实现过程 3#xff0c;结果展示 1#xff0c;主要原理以及函数介绍 ap argparse.ArgumentParser() 创建一个ArgumentParser对象#xff0c;并将其赋值给变量ap。这个对象可以接受我们的脚…目录 1主要原理以及函数介绍 全部代码以 2 实现过程 3结果展示 1主要原理以及函数介绍 ap argparse.ArgumentParser() 创建一个ArgumentParser对象并将其赋值给变量ap。这个对象可以接受我们的脚本的命令行参数从而实现根据命令行参数执行不同的操作。 ap.add_argument(-i, --image, requiredTrue,helppath to the input image) 添加一个命令行参数-i/--image并指定它是必需的用户必须提供一个图像路径作为输入。 args vars(ap.parse_args()) 解析命令行参数并将它们存储在args字典中 ANSWER_KEY {0: 1, 1: 4, 2: 0, 3: 3, 4: 1} 定义一个字典其中包含每道题目的正确答案。键是问题的索引、值是正确答案的编号 def order_points(pts): 定义函数order_points用于按照指定顺序找到四个坐标点 def four_point_transform(image, pts): 定义函数four_point_transform用于执行透视变换。 透视变换是一种在图像处理领域中常用的变换方式它可以将一个平面上的图像投影到一个新的视平面上。透视变换通常用于纠正图像中的透视畸变例如将斜着拍摄的照片转换为正常的平面视图。在透视变换中图像中的平行线可能会变成不平行线而原本不平行的线可能会变成平行线。函数four_point_transform就是利用四个特定的点来确定透视变换矩阵并对输入的图像进行透视变换。 def sort_contours(cnts, methodleft-to-right): 定义函数sort_contours用于对轮廓进行排序 def cv_show(name,img): 定义函数cv_show用于显示图像。 image cv2.imread(args[image]) 读取输入的图像并将其存储在变量image中 contours_img image.copy() 复制图像用于在图像上绘制轮廓 cnts cv2.findContours(edged.copy(), cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)[1] 查找图像中的轮廓使用外部轮廓检查模式RETR_EXTERNAL只检测外部轮廓使用简单的轮廓逼近算法CHAIN_APPROX_SIMPLE来减少点数。返回值是一个元组其中第二个元素表示轮廓列表 cv2.drawContours(contours_img,cnts,-1,(0,0,255),3) 将找到的轮廓绘制在图像上颜色为红色 docCnt None 初始化docCnt变量用于存储找到的四个坐标点 if len(cnts) 0: 如果找到了轮廓则执行以下操作 cnts sorted(cnts, keycv2.contourArea, reverseTrue) 对轮廓根据其面积大小进行排序从大到小排列 peri cv2.arcLength(c, True)     计算轮廓周长 approx cv2.approxPolyDP(c, 0.02 * peri, True) 使用迭代逼近算法获取轮廓的近似形状。如果近似的轮廓拥有四个顶点则将其作为找到的四个坐标点。 if len(approx) 4:  如果找到了四个坐标点则将它们保存到docCnt变量中并跳出循环。 warped four_point_transform(gray, docCnt.reshape(4, 2)) 对图像进行透视变换将找到的四个坐标点映射到新的矩阵中 thresh cv2.threshold(warped, 0, 255,cv2.THRESH_BINARY_INV | cv2.THRESH_OTSU)[1] 对变换后的图像进行二值化处理使用Otsus自适应阈值处理算法来获取最优阈值。返回值是一个元组其中第二个元素是处理后的图像。 hresh_Contours thresh.copy() 复制处理后的图像用于在上面绘制轮廓 cnts cv2.findContours(thresh.copy(), cv2.RETR_EXTERNAL,cv2.CHAIN_APPROX_SIMPLE)[1] 查找处理后图像中的轮廓并使用RETR_EXTERNAL和CHAIN_APPROX_SIMPLE参数。 cv2.drawContours(thresh_Contours,cnts,-1,(0,0,255),3) 将找到的轮廓绘制在二值化图像上 cv_show(thresh_Contours,thresh_Contours) 调用cv_show函数显示绘制轮廓后的图像 questionCnts []初始化questionCnts列表。 for c in cnts:遍历所有轮廓 (x, y, w, h) cv2.boundingRect(c)获取表示轮廓区域位置和大小的矩形。 ar w / float(h)计算矩形的宽高比。 if w 20 and h 20 and ar 0.9 and ar 1.1:如果矩形满足指定的条件则将其添加到questionCnts列表中。 questionCnts sort_contours(questionCnts,methodtop-to-bottom)[0]对questionCnts列表中的轮廓按照从上到下的顺序进行排序。for (q, i) in enumerate(np.arange(0, len(questionCnts), 5))对每一行问题进行处理。cnts sort_contours(questionCnts[i:i 5])[0]对每个问题中的五个选项进行排序。bubbled None初始化变量bubbled用于保存所选答案。for (j, c) in enumerate(cnts):遍历每个选项。mask np.zeros(thresh.shape, dtypeuint8) 创建一个全黑图像大小与thresh相同。cv2.drawContours(mask, [c], -1, 255, -1)绘制选项的轮廓。mask cv2.bitwise_and(thresh, thresh, maskmask)将二值化图像thresh与mask相乘只保留交集部分。total cv2.countNonZero(mask)计算非零像素的数目用于判断是否选择了这个选项。if bubbled is None or total bubbled[0]:如果之前没有选择过或者当前选择的像素数更多则更新选择。bubbled (total, j)将当前选择的像素数以及选项索引保存到bubbled变量中。color (0, 0, 255)初始化颜色为红色。k ANSWER_KEY[q]获取当前问题的正确答案。if k bubbled[1]:如果当前选项是正确的则将颜色设置为绿色并增加正确计数器。color (0, 255, 0) correct 1cv2.drawContours(warped, [cnts[k]], -1, color, 3)将选项的轮廓绘制在变换后的图像上颜色为正确或错误的颜色。score (correct / 5.0) * 100计算得分。print([INFO] score: {:.2f}%.format(score))输出得分。cv2.putText(warped, {:.2f}%.format(score), (10, 30),cv2.FONT_HERSHEY_SIMPLEX, 0.9, (0, 0, 255), 2)在变换后的图像上绘制得分。cv2.imshow(Original, image)显示原始图像。cv2.imshow(Exam, warped)显示处理结果。cv2.waitKey(0)等待用户按下任意键。 全部代码以 2 实现过程 导入所需的库和模块首先导入numpy、argparse、imutils和cv2等库用于进行科学计算、命令行参数解析、图像处理和机器视觉任务。 解析命令行参数使用argparse库创建ArgumentParser对象并添加一个命令行参数-i/--image要求用户提供一个输入图像的路径。然后使用ap.parse_args()方法解析命令行参数并将结果存储在args字典中。 定义正确答案字典创建一个字典其中包含每道题目的正确答案编号。 函数定义定义了四个函数分别用于找到四个坐标点、执行透视变换、对轮廓进行排序以及显示图像。 读取输入图像使用cv2.imread()函数读取输入的图像并将其存储在变量image中。 图像预处理将图像转换为灰度图像然后应用高斯模糊以平滑边缘并减少噪声。接下来使用Canny算法进行边缘检测得到二值化的边缘图像。 查找轮廓使用cv2.findContours()函数查找图像中的轮廓并使用外部轮廓检查模式RETR_EXTERNAL只检测外部轮廓使用简单的轮廓逼近算法CHAIN_APPROX_SIMPLE来减少点数。获取到的轮廓存储在cnts变量中。 找到答题卡区域遍历轮廓计算轮廓周长和近似形状并通过一系列条件判断找到包含答题卡的轮廓。将找到的四个坐标点保存到docCnt变量中。 执行透视变换使用four_point_transform()函数对图像进行透视变换将找到的四个坐标点映射到新的矩阵中。 对变换后的图像进行二值化处理使用Otsus自适应阈值处理算法对图像进行二值化处理得到二值化的图像。 查找轮廓使用cv2.findContours()函数再次查找处理后图像中的轮廓并使用RETR_EXTERNAL和CHAIN_APPROX_SIMPLE参数。 处理每个问题的选项遍历每个问题所在的行对该行中的五个选项进行处理。首先对选项进行排序然后使用遍历的方式计算每个选项中非零像素的数量根据数量确定是否选择了该选项同时记录最多选择的选项和其索引。 计算得分根据正确的选项数量和总题数计算得分同时输出得分。 显示结果在变换后的图像上绘制得分并显示原始图像和处理结果。 等待用户按下任意键结束程序。 3结果展示 高斯滤波后结果 边缘检测结果 图像轮廓检测结果 透视变换结果 二值化处理结果 mask只保留交集部分 遍历每一个结果计算非零像素的数目用于判断是否选择了这个选项 计算的得分并显示
http://www.sadfv.cn/news/6184/

相关文章:

  • 国内知名的网站建设公司ui平面设计是做什么的
  • 百度网站入口特效词重庆网站seo多少钱
  • 中韩双语网站制作价格wordpress edit.php
  • 常用搜索网站天津卓信软件开发有限公司
  • 网页建站总结报告合肥响应式网站开发方案
  • 蚌埠铁路建设监理公司网站wordpress主题后台汉化
  • 路由器做网站终端免费项目网
  • 物流网站设计店面设计师哪里找
  • 美食网站建设项目分析报告中元建设网站
  • 苏州区建设局网站国内新冠最新消息
  • wordpress主题6网站建设优化开发公司哪家好
  • 北京企业网站模板建站怎么用广东手机网站建设哪家专业
  • 网站已备案下一步怎么做网站建设和推广方案
  • 网站建设要准备什么nike官网宣传片
  • 网站制作厂家wordpress文档案例
  • 上海电信网站备案网站手机pc同步
  • visual studio制作网站开发特价旅游机票网站建设
  • 360网站收录盐城市城南建设局网站
  • 网站做美食视频挣钱吗美团如何进行网站的建设和维护
  • 公司网站费用计入什么科目wordpress主题php
  • 备案网站大全购物商城项目
  • 网站建设 选择题东莞门户网站建设
  • 广东地区建网站的公司室内设计效果图在哪里找
  • 抚顺做网站网站建设西安
  • 湖南网站建设营销推广百度一下你就知道官方
  • 高端网站开发哪里好低价网站建设联系方式
  • 深圳网站建设流程西安网站建设 中讯创赢
  • 河海大学学风建设网站注册公司的流程和材料
  • 网站建设 地址 昌乐爱网站
  • 漫画做视频在线观看网站网站SEO优化实训