码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 计算机图像处理:图像轮廓


    图像轮廓

    图像阈值分割主要是针对图片的背景和前景进行分离,而图像轮廓也是图像中非常重要的一个特征信息,通过对图像轮廓的操作,就能获取目标图像的大小、位置、方向等信息。画出图像轮廓的基本思路是:先用阈值分割划分为两类图像,再去寻找轮廓。OpenCV中使用cv2.findContours(image,mode,method)函数来寻找图像轮廓,其中参数image、mode、method分别为输入的图像、轮廓搜索模式(决定了轮廓的提取方式)、轮廓近似方法(决定了如何表达轮廓)。mode轮廓的检索模式有:

    cv2.RETR_EXTERNAL表示只检测外轮廓;

    cv2.RETR_LIST表示检测的轮廓不建立等级关系;

    cv2.RETR_CCOMP表示建立两个等级的轮廓,上面的一层为外边界,里面的一层为内孔的边界信息。如果内孔内还有一个连通物体,这个物体的边界也在顶层;

    cv2.RETR_TREE表示建立一个等级树结构的轮廓。

    method轮廓的近似办法有:

    cv2.CHAIN_APPROX_NONE表示存储所有的轮廓点,相邻的两个点的像素位置差不超过1,即max(abs(x1-x2),abs(y2-y1))==1;

    cv2.CHAIN_APPROX_SIMPLE表示压缩水平方向,垂直方向,对角线方向的元素,只保留该方向的终点坐标,例如一个矩形轮廓只需4个点来保存轮廓信息;

        cv2.CHAIN_APPROX_TC89_L1,CV_CHAIN_APPROX_TC89_KCOS表示使用teh-Chinl chain 近似算法。

    cv2.findContours()函数的输出信息contours、hierarchy分别为返回的轮廓和图像的拓扑信息(轮廓层次)。如果想要显示出图像轮廓,还需要使用OpenCV中的cv2.drawContours(image, contours, contourIdx, color, thickness=None, lineType=None, hierarchy=None, maxLevel=None, offset=None)函数来绘制出图像轮廓,其中image、contours、contourIdx、color分别为输入的图像、绘制的轮廓、轮廓填充和轮廓的颜色。

    示例代码

    1. def f_contours():
    2. img = cv.imread("cup.jpg")
    3. # draw会改变原图,这里做一个备份
    4. img_copy = img.copy()
    5. gray = cv.cvtColor(img, cv.COLOR_BGR2GRAY)
    6. ret, thresh = cv.threshold(gray, 128, 255, cv.THRESH_BINARY)
    7. cv_show(thresh)
    8. # 这个函数只支持接收单颜色通道图像,否则报错
    9. contours, hierarchy = cv.findContours(thresh, cv.RETR_TREE, cv.CHAIN_APPROX_NONE)
    10. print(len(contours))
    11. result = cv.drawContours(img_copy, contours, -1, (0, 0, 255), 2)
    12. cv_show(result)

    效果图片 

  • 相关阅读:
    全域安全:一种基于LAXCUS分布式操作系统全新安全管理模型
    (续)SSM整合之spring笔记(AOP 基于注解的AOP之前置通知)(P101)
    JSON数据格式
    什么是CPU密集型、IO密集型?什么是多进程与线程和协程?并行与并发?
    xshell不能通过账户密码连接虚拟机
    向量数据库Milvus Cloud 2.3 Attu 界面升级,用户体验更友好
    【PyQt5 实战项目1】武汉大学建筑知识系统--思路分享2(软件版本1.0.0介绍之打开图片)
    【TensorRT】Win10系统python/c++安装tensorrt库
    戴尔R730服务器设置管理IP(iDRAC)和安装系统
    在 Ubuntu 中, 使用 fsck 命令来修复磁盘文件系统
  • 原文地址:https://blog.csdn.net/qq_20660115/article/details/133364974
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号