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

网站导航页面制作wordpress调用文章阅读量

网站导航页面制作,wordpress调用文章阅读量,网站的导航页怎么做,新网站如何做排名摘要#xff1a;本文详细介绍了 OpenCV 中用于查找图像轮廓的 cv2.findContours() 函数以及绘制轮廓的 cv2.drawContours() 函数的使用方法。涵盖 cv2.findContours() 各参数#xff08;如 mode 不同取值对应不同轮廓检索模式#xff09;及返回值的详细解析#xff0c;搭配… 摘要本文详细介绍了 OpenCV 中用于查找图像轮廓的 cv2.findContours() 函数以及绘制轮廓的 cv2.drawContours() 函数的使用方法。涵盖 cv2.findContours() 各参数如 mode 不同取值对应不同轮廓检索模式及返回值的详细解析搭配多幅示例图片与丰富代码示例展示不同模式下的效果差异同时展示了 cv2.drawContours() 的用法并通过案例讲解如何利用轮廓绘制功能获取前景对象助力读者全面掌握图像轮廓相关操作要点及应用场景。 如果您觉得我的文章对您有帮助可以点赞收藏关注持续学习更多与OpenCV相关的知识 OpenCV 图像轮廓查找与绘制全攻略从函数使用到实战应用详解 查找并绘制轮廓cv2.findContours()函数的使用返回值countours的属性参数mode与返回值hierarchy cv2.drawContours函数的使用利用轮廓绘制功能获取前景对象 致谢 查找并绘制轮廓 边缘检测能检测出边缘但是边缘不连续但不是一个整体。OpenCV提供了cv2.findContours()去查找图像轮廓cv2.drawContours()将轮廓绘制起来。 cv2.findContours()函数的使用 该函数的语法如下 image与被处理图像一致contours返回的轮廓 hierarchy 图像的拓普信息轮廓层次 cv2.findContoursimage原始图像mode轮廓检索模式method轮廓的近似方法 这里有一个补充当OpenCV版本的大于4.x返回值没有image 我通过画图板画了一个例子存储在和代码同一个文件夹下大家可以复制我的图片去作为练习,补充一个重要的前提OpenCV中都是从黑色背景中找白色对象对象是白的背景是黑的图片必须是灰度二值图像对于彩色图像要做好阈值处理 我将这张图片命名为countours.JPG这是我的文件夹我用的是 jupyter notebook 大家用pycharm的就把代码和图片放在同一个文件夹下就可以运行我的代码了 返回值countours的属性 他的类型是list import numpy as np import cv2 img cv2.imread(countours.JPG,cv2.IMREAD_GRAYSCALE) countours , hierarchy cv2.findContours(img,mode cv2.RETR_EXTERNAL,method cv2.CHAIN_APPROX_NONE) print(type(countours))每一条轮廓的shape与内容都用列表的方法访问 一定要注意 必须先用高斯滤波进行平滑处理去除噪声 再用二值化阈值处理才能计算出正确的轮廓 import numpy as np import cv2 img cv2.imread(countours.JPG,cv2.IMREAD_GRAYSCALE)# 先用高斯滤波平滑处理 img cv2.GaussianBlur(img, (5, 5), 0) # 再用阈值处理转化为二值图像 _,img cv2.threshold(img, 128, 255, cv2.THRESH_BINARY) countours , hierarchy cv2.findContours(img,mode cv2.RETR_EXTERNAL,method cv2.CHAIN_APPROX_NONE) print(len(countours)) for i in range(len(countours)):print(countours[i].shape)print(countours[i])通过代码找出来十条轮廓与我们手动标注的数量一致 参数mode与返回值hierarchy 我将这张图片命名为mode.JPG这是我的文件夹我用的是 jupyter notebook 大家用pycharm的就把代码和图片放在同一个文件夹下就可以运行我的代码了 不同的mode参数对应着不同的hierarchy分为四种 第一种cv2.RETR_EXTERNAL只检测外轮廓 import numpy as np import cv2 img cv2.imread(mode.JPG,cv2.IMREAD_GRAYSCALE)# 先用高斯滤波平滑处理 img cv2.GaussianBlur(img, (5, 5), 0) # 再用阈值处理转化为二值图像 _,img cv2.threshold(img, 128, 255, cv2.THRESH_BINARY) countours , hierarchy cv2.findContours(img,mode cv2.RETR_EXTERNAL,method cv2.CHAIN_APPROX_NONE) print(len(countours)) print(hierarchy) 输出值[1 -1 -1 -1]代表 第0个轮廓的后一个轮廓是第一个轮廓他没有前一个轮廓 所以第二个元素是-1 他没有子轮廓 和父轮廓 所以第三第四个元素都是 - 1 输出值[-1 0 -1 -1]代表第1个轮廓 没有后面轮廓了 所以是-1 他的前一个轮廓 是0他没有子轮廓和父轮廓 所以第三个第四个元素都是 -1 找到了两条轮廓原因是cv2.RETR_EXTERNAL会导致只搜索外轮廓 第二种cv2.RETR_LIST 检测到的轮廓不考虑父子关系 在上面的代码中修改mode cv2.RETR_LIST运行结果如下 这个结果前两行的第一个元素都是 1 2 说明他们有后一个轮廓 因为没有考虑父子关系所以每一行的三四元素都是-1 第1 第2 轮廓都有前一个轮廓 分别是 0 和1 所以第二列 是 -1 0 1 第三种cv2.RETR_CCOMP 检查所有轮廓并组织称一个两级层次结构,修改参数mode cv2.RETR_CCOMP继续运行得到如下结果 可以看到第1 轮廓 和 第2 轮廓存在了 父子 关系 对于1,2轮廓来说他们是父子关系所以不存在后一个轮廓所以是-1 第四种cv2.RETR_TREE 生成一个等级树为了验证第四个和第三个的区别我重新用画图板画了一张图起名为tree.JPG大家可以复制到自己的文件夹下 import numpy as np import cv2 img cv2.imread(tree.JPG,cv2.IMREAD_GRAYSCALE) # 先用高斯滤波平滑处理 img cv2.GaussianBlur(img, (5, 5), 0) # 再用阈值处理转化为二值图像 _,img cv2.threshold(img, 128, 255, cv2.THRESH_BINARY) countours_comp , hierarchy_comp cv2.findContours(img,mode cv2.RETR_CCOMP,method cv2.CHAIN_APPROX_NONE) countours_tree , hierarchy_tree cv2.findContours(img,mode cv2.RETR_TREE,method cv2.CHAIN_APPROX_NONE) print(hierarchy_comp) print(hierarchy_tree) 详细分析一下运行结果 显而易见的是 cv2.RETR_CCOMP时最多产生一个两级的父子结构 但是cv2.RETR_TREE产生了一个多级的父子结构树 cv2.drawContours函数的使用 语法: cou_image待绘制的轮廓图像 cv2.drawCountoursimage待处理图像countours需要绘制的轮廓 list类型,countourIdx绘制的边缘索引color绘制的颜色thickness绘制轮廓的粗细lineType画笔类型hierarchy拓普信息maxLevel层次的深度offset偏移参数使得轮廓偏移多少位置 使用tree.JPG做案例来用代码验证一下效果 import numpy as np import cv2 img cv2.imread(tree.JPG,cv2.IMREAD_GRAYSCALE) # 先用高斯滤波平滑处理 img cv2.GaussianBlur(img, (5, 5), 0) # 再用阈值处理转化为二值图像 _,img cv2.threshold(img, 128, 255, cv2.THRESH_BINARY) countours_tree , hierarchy_tree cv2.findContours(img,mode cv2.RETR_TREE,method cv2.CHAIN_APPROX_NONE)n len(countours_tree) contourImg [] cv2.imshow(orig,img) for i in range(n):temp np.zeros(img.shape,np.uint8)contourImg.append(temp)contourImg[i] cv2.drawContours(contourImg[i],countours_tree,i,(255,255,255),5)cv2.imshow(fcontour[ {i}],contourImg[i]) cv2.waitKey() cv2.destroyAllWindows() 利用轮廓绘制功能获取前景对象 这部分的案例使用pig.JPG图片需要的可以直接复制跟代码放在同一文件夹之下 先讲解一下代码的思路首先转化成灰度值和二值图像然后获取轮廓绘制整个轮廓利用按位与运算与原图像进行按位与运算提取前景对象。 import numpy as np import cv2 bgr_img cv2.imread(pig.JPG) img cv2.cvtColor(bgr_img,cv2.COLOR_BGR2GRAY) # 先用高斯滤波平滑处理 img cv2.GaussianBlur(img, (5, 5), 0) # 再用阈值处理转化为二值图像 _,img cv2.threshold(img, 128, 255, cv2.THRESH_BINARY) countours_tree , hierarchy_tree cv2.findContours(img,mode cv2.RETR_TREE,method cv2.CHAIN_APPROX_NONE) mask np.zeros(bgr_img.shape,np.uint8) mask cv2.drawContours(mask,countours_tree,-1,(255,255,255),-1) loc cv2.bitwise_and(mask,bgr_img) cv2.imshow(mask,mask) cv2.imshow(loc,loc) cv2.waitKey() cv2.destroyAllWindows()致谢 本文参考了一些博主的文章博取了他们的长处也结合了我的一些经验对他们表达诚挚的感谢使我对 图像轮廓查找与绘制 有更深入的了解也推荐大家去阅读一下他们的文章。纸上学来终觉浅明知此事要躬行 pythonopencv基础篇——实现提取轮廓
http://www.w-s-a.com/news/898245/

相关文章:

  • app小程序网站开发品牌购物网站十大排名
  • 用wordpress做购物网站龙岩品牌设计
  • 网站开发是指wordpress系统在线升级
  • 网站建设运营的灵魂是什么意思页面跳转中
  • 家政服务网站源码重庆建网站企业有哪些
  • 怎样分析一个网站做的好坏重庆长寿网站设计公司哪家专业
  • 百度助手app下载苏州seo关键词优化排名
  • 17网站一起做 佛山诸城网站建设多少钱
  • 郑州网站建设培训学校泉州做网站设计公司
  • 西峡做网站深圳建筑工务署官网
  • 单县网站惠州seo计费
  • 万网网站建设 优帮云怎样用记事本做网站
  • 注册域名后网站建设百度指数的功能
  • 怎么做伪静态网站山西网站建设设计
  • 做小型企业网站多少钱衡阳市建设局网站
  • 金华专业网站建设公司网站建设空间和服务器方式
  • 自己做的网站在浏览器上显示不安全吗wordpress revolution slider
  • 西安网站建设推广优化搜索引擎营销
  • 互联网站备案管理工作方案 工信部注册深圳公司需要什么条件
  • 网站网站服务器网站建设 物流
  • 国外开发网站手机网站建设制作
  • 怎么把自己做的网站传网上青岛工程建设监理公司网站
  • 网站301跳转效果商丘网站公司
  • 公司网站建设西安网站的架构与建设
  • 食品科技学校网站模板花溪村镇建设银行网站
  • 图片渐隐 网站头部flash地方志网站建设自查报告
  • 深圳做商城网站视觉品牌网站建设
  • 永康电子商务网站建设弹幕网站怎么做
  • 百川网站企业做网站要注意哪些
  • 球迷类的网站如何做网站建设需要哪些素材