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

opencv-图像轮廓

轮廓可以简单认为成将连续的点(连着边界)连在一起的曲线,具有相同的颜色或者灰度。轮廓在形状分析和物体的检测和识别中很有用。
• 为了更加准确,要使用二值化图像。在寻找轮廓之前要进行阈值化处理或者 Canny 边界检测
• 查找轮廓的函数会修改原始图像。如果你在找到轮廓之后还想使用原始图像的话,你应该将原始图像存储到其他变量中。
• 在 OpenCV 中,查找轮廓就像在黑色背景中超白色物体。你应该记住,要找的物体应该是白色而背景应该是黑色。
让我们看看如何在一个二值图像中查找轮廓:
cv2.findContours() 是 OpenCV 中用于查找图像中轮廓的函数。该函数的基本语法如下:

contours, hierarchy = cv2.findContours(image, mode, method[, contours[, hierarchy[, offset]]])

参数说明:

  • image: 输入图像,通常为二值图像(例如阈值化后的图像)
  • mode: 轮廓检索模式,有如下几种选择:
    • cv2.RETR_EXTERNAL: 只检测最外层的轮廓。
    • cv2.RETR_LIST: 检测所有轮廓,不建立轮廓层次。
    • cv2.RETR_CCOMP: 检测所有轮廓,建立两层轮廓层次。
    • cv2.RETR_TREE: 检测所有轮廓,建立完整的轮廓层次。
  • method: 轮廓逼近方法,有如下几种选择:
    • cv2.CHAIN_APPROX_NONE: 存储所有的轮廓点。
    • cv2.CHAIN_APPROX_SIMPLE: 压缩水平、垂直和斜率方向的元素,只保留其端点。
    • cv2.CHAIN_APPROX_TC89_L1cv2.CHAIN_APPROX_TC89_KCOS: 应用 Teh-Chin 链逼近算法。
  • contours: 输出参数,存储检测到的轮廓。
  • hierarchy: 输出参数,存储轮廓的层次信息。
  • offset: 可选参数,偏移值,通常不需要使用。
import cv2
# 读取图像
img = cv2.imread( r"C:\Users\mzd\Desktop\opencv\images.jpg")
# 将图像转换为灰度
gray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY)# 使用阈值处理图像
ret, thresh = cv2.threshold(gray, 127, 255, 0)# 查找轮廓
contours, hierarchy = cv2.findContours(thresh, cv2.RETR_EXTERNAL, cv2.CHAIN_APPROX_SIMPLE)# 在原始图像上绘制轮廓
cv2.drawContours(img, contours, -1, (0, 255, 0), 2)# 显示原始图像和带有轮廓的图像
cv2.imshow('Original Image', img)
cv2.imshow('Contour Image', thresh)# 等待用户按下任意键
cv2.waitKey(0)
cv2.destroyAllWindows()

在这里插入图片描述

这个示例演示了如何使用 cv2.findContours() 函数查找图像中的轮廓,并使用 cv2.drawContours() 函数在原始图像上绘制这些轮廓。

http://www.lryc.cn/news/242477.html

相关文章:

  • 小黑子—Maven高级
  • 一个正整数转为2进制和8进制,1的个数相同的第23个数是什么?
  • Unity阻止射线穿透UI的方法之一
  • HarmonyOS开发:ArkTs常见数据类型
  • Unsupervised MVS论文笔记
  • Matplotlib图形注释_Python数据分析与可视化
  • 如何把A3 pdf 文章打印成A4
  • 【Vue】vue指令
  • 记录华为云服务器(Linux 可视化 宝塔面板)-- 安全组篇
  • 基于Python 中创建 Sentinel-2 RGB 合成图像
  • 保姆级连接FusionInsight MRS kerberos Hive
  • electerm 跨平台的终端 /ssh/sftp 客户端
  • Anthropic LLM论文阅读笔记
  • docker启动容器失败,然后查看日志,docker logs查看容器出现报错:
  • 【开源】基于Vue.js的网上药店系统
  • App 设计工具
  • 毅速:3D打印随形透气钢为解决模具困气提供了新助力
  • 某软件商店app抓包分析与sign加密算法实现
  • 万界星空科技QMS质量管理系统功能
  • 杨传辉:从一体化架构,到一体化产品,为关键业务负载打造一体化数据库
  • oracle “ORA-25153:临时表空间为空”
  • 游览器缓存讲解
  • 中国天然径流量格点数据集CNRD v1.0(1961-2018)
  • JoyT的科研之旅第一周——科研工具学习及论文阅读收获
  • expo 初始化指定SDK版本项目
  • js进阶笔记之作用域
  • 【汉诺塔 —— (经典分治递归)】
  • APP运营常用的ChatGPT通用提示词模板
  • 医学检验(LIS)管理系统源码,LIS源码,云LIS系统源码
  • RabbitMQ 安装(在docker容器中安装)