传统视觉轮廓识别

2023-10-27

传统视觉第二讲

学习任务

2023传统视觉第二讲–轮廓识别

传统视觉识别流程

对于输入的图片,使用各种图像处理手段,如颜色空间转换、二值化、形态学处理等得到一张只包含黑白两色的mask,再对mask进行轮廓提取,根据轮廓的长宽面积等特征筛选出目标轮廓。
在这里插入图片描述
转换成下面这样
在这里插入图片描述

findContours函数

轮廓提取使用findContours函数,其参数如下:

void cv::findContours ( InputArray image,
OutputArrayOfArrays contours,
OutputArray hierarchy,
int mode,
int method,
Point offset = Point()
)

void cv::findContours ( InputArray image,
OutputArrayOfArrays contours,
int mode,
int method,
Point offset = Point()
)

参数释义

第一个参数:image,单通道图像矩阵,可以是灰度图,但更常用的是二值图像,一般是经过Canny、拉普拉斯等边缘检测算子处理过的二值图像;
第二个参数:contours,定义为“vector<vector> contours”,即为得到的一组轮廓,每个轮廓由点集vector表示;
第三个参数(可选):hierarchy,定义为“vector hierarchy”,用来表示轮廓的等级关系,暂时不作介绍;
第四个参数:int型的mode,定义轮廓的检索模式:
取值一:CV_RETR_EXTERNAL只检测最外围轮廓,包含在外围轮廓内的内围轮廓被忽略;
取值二:CV_RETR_LIST 检测所有的轮廓,包括内围、外围轮廓,但是检测到的轮廓不建立等级关系;
取值三:CV_RETR_CCOMP 检测所有的轮廓,但所有轮廓只建立两个等级关系,外围为顶层,若外围内的内围轮廓还包含了其他的轮廓信息,则内围内的所有轮廓均归属于顶层;
取值四:CV_RETR_TREE 检测所有轮廓,所有轮廓建立一个等级树结构。外层轮廓包含内层轮廓,内层轮廓还可以继续包含内嵌轮廓。
第五个参数:int型的method,定义轮廓的近似方法:
取值一:CV_CHAIN_APPROX_NONE 保存物体边界上所有连续的轮廓点到contours向量内
取值二:CV_CHAIN_APPROX_SIMPLE 仅保存轮廓的拐点信息,把所有轮廓拐点处的点保存入contours向量内,拐点与拐点之间直线段上的信息点不予保留
其他取值不作介绍
第六个参数:Point偏移量,所有的轮廓信息相对于原始图像对应点的偏移量。

为便于观察,在提取轮廓后可使用drawContours方法绘制轮廓。

对轮廓的操作

凸包convexHull
在这里插入图片描述

最小外接矩形minAreaRect
在这里插入图片描述

最小外接圆minEnclosingCircle
最小外接椭圆fitEllipse

任务

下图为对包含装甲板的图像处理后得到的mask,对于该图,提取并筛选出装甲板两个灯柱的轮廓,并标出装甲板的中心。在这里插入图片描述
这里由于本人代码水平并不高,于是参考了同组大佬的代码
原文链接:在这里
运行好以后图片为:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

传统视觉轮廓识别 的相关文章

  • OpenCV Mat 和 Leptonica Pix 之间的转换

    我需要在 C 中在 OpenCV Mat 图像和 Leptonica Pix 图像格式之间进行转换 这用于 8 位灰度图像的二值化 我发现发现了 ikaliga的回答 https stackoverflow com a 25929320 2
  • 是否可以在 PyScript 中使用 OpenCV 模块?

    我想使用 opencv 模块 但无法导入 OpenCV 那么我该如何解决这个问题呢 顺便说一句 Pyodide 支持 OpenCV 示例代码 https i stack imgur com ahwex jpg 尚不支持 OpenCV 此时O
  • “没有名为‘cv2’的模块”,但已安装

    我已经安装了包含 opencv 贡献的 whl 文件 因为我想使用 SIFT 算法 我在 conda 环境中使用 pip 安装了它 所以当我在 conda list 中提示时 它会向我显示 opencv python 3 4 5 contr
  • OpenCV SIFT 描述符关键点半径

    我正在深入研究OpenCV的SIFT描述符提取的实现 https github com Itseez opencv blob master modules nonfree src sift cpp 我发现了一些令人费解的代码来获取兴趣点邻域
  • BRISK 特征检测器检测零个关键点

    下面显示的 Brisk 探测器没有给我任何关键点 有人可以提出一个问题吗 我将尝试用一些代码解释我在下面所做的事情 include opencv2 features2d features2d hpp using namespace cv u
  • Python:Urllib2 和 OpenCV

    我有一个程序 可以将图像保存在本地目录中 然后从该目录中读取图像 但我不想保存图像 我想直接从url读取它 这是我的代码 import cv2 cv as cv import urllib2 url http cache2 allposte
  • 从 NumPy 数组到 Mat 的 C++ 转换 (OpenCV)

    我正在围绕 ArUco 增强现实库 基于 OpenCV 编写一个薄包装器 我试图构建的界面非常简单 Python 将图像传递给 C 代码 C 代码检测标记并将其位置和其他信息作为字典元组返回给 Python 但是 我不知道如何在 Pytho
  • 深度估计的准确性 - 立体视觉

    我正在研究立体视觉 我对这个问题的深度估计的准确性感兴趣 这取决于几个因素 例如 适当的立体校准 旋转 平移和失真提取 图像分辨率 相机和镜头质量 失真越小 色彩捕捉正确 两个图像之间的匹配特征 假设我们没有低成本的相机和镜头 没有廉价的网
  • 如何使用 AdaBoost 进行特征选择?

    我想使用 AdaBoost 从大量 100k 中选择一组好的特征 AdaBoost 的工作原理是迭代功能集并根据功能的执行情况添加功能 它选择对现有特征集错误分类的样本表现良好的特征 我目前正在 Open CV 中使用CvBoost 我得到
  • 如何检测斑点并将其裁剪成 png 文件?

    我一直在开发一个网络应用程序 我陷入了一个有问题的问题 我会尝试解释我想要做什么 在这里您看到第一个大图像 其中有绿色形状 我想要做的是将这些形状裁剪成不同的 png 文件 并使它们的背景透明 就像大图像下面的示例裁剪图像一样 第一张图像将
  • opencv_contrib编译错误:类没有成员

    我必须实现 SURF 算法来进行图像拼接 我在使用列出的库时遇到了问题here https stackoverflow com questions 33560251 opencv 3 0 0 ubuntu 14 04 nonfree non
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • java.lang.UnsatisfiedLinkError:java.library.path中没有opencv_java2411

    我正在尝试将 opencv 添加到我的 Spring Boot Maven 项目中 为了使用 opencv 库 我必须在 java library path 中提供本机库 我已将以下命令添加到 Eclipse VM 参数中 Djava li
  • 提取二值图像中的最中心区域

    我正在处理二进制图像 之前使用此代码来查找二进制图像中的最大区域 Use the hue value to convert to binary thresh 20 thresh thresh img cv2 threshold h thre
  • 车辆分割和跟踪

    我已经从事一个项目一段时间了 目的是在无人机捕获的视频中检测和跟踪 移动 车辆 目前我正在使用 SVM 该 SVM 接受了从车辆和背景图像中提取的局部特征的特征袋表示的训练 然后 我使用滑动窗口检测方法来尝试定位图像中的车辆 然后我想要跟踪
  • Haar级联正例图像大小调整

    我正在迈出第一步 为自定义对象识别创建 haar 级联 我花了时间获取大量数据并编写了一些预处理脚本以将视频转换为帧 我的下一步是裁剪感兴趣的对象 以创建一些积极的训练示例 我有几个问题 我确实在网上寻找答案 我有点困惑 我读到我应该致力于
  • Python 2.7/OpenCV 3.3: cv2.initUn DistorifyMap 中出现错误。不显示不扭曲的校正图像

    我想扭曲并校正我的立体图像 为此 我在 Python 2 7 中使用了 Opencv 3 3 我使用的代码是 import cv2 import numpy as np cameraMatrixL np load mtx left npy
  • OpenCV 中的 Canny 可以同时处理灰度图像和彩色图像吗?

    我有一些关于Canny 边缘检测器 in OpenCV 这是我尝试过的代码 def auto canny image sigma 0 33 v np median image lower int max 0 1 0 sigma v uppe
  • OpenCV SVM 给出奇怪的预测结果

    我对 OpenCV 和支持向量机都很陌生 我想使用 SVM 训练具有两个标签的数据集 然后预测给定集合的标签 我当前的集合包含大约 600 行 具有相等的类分布 1 为 300 行 1 为 300 行 包含 34 列 这是我当前用于设置 O
  • 使用“const cv::Mat &”、“cv::Mat &”、“cv::Mat”或“const cv::Mat”作为函数参数的区别?

    我已经彻底搜索过 但没有找到一个简单的答案 传递 opencv 矩阵 cv Mat 作为函数的参数 我们传递一个智能指针 我们对函数内部的输入矩阵所做的任何更改也会改变函数范围之外的矩阵 我读到 通过将矩阵作为 const 引用传递 它不会

随机推荐

  • uniapp组件库总结笔记

    uView ui uView 2 0 全面兼容 nvue 的 uni app 生态框架 uni app UI 框架 优点 整体样式风格不错 缺点 不支持vue3 可以使用社区维护的uview plus uview plus 3 0 全面兼容
  • 蓝桥杯2015年第六届真题-机器人塔

    题目 题目链接 题解 DFS 二进制枚举 经典dfs之一 好像比较经典的那个同型dfs题叫 符号三角形 可以看出上面一行的安排方式均由下面一行的安排方式决定 因此我们只要定好最后一行 那么上面的安排方式均可以由下行推出 且最后一行固定则整个
  • 黑马实战项目瑞吉外卖的总结

    文章目录 一 瑞吉外卖项目总结 1 后端Controller层返回结果统一封装的R对象 2 定义静态资源映射关系 3 配置消息资源转换器 3 1 Reggie项目中遇到的问题 3 2 原理 3 3 解决方案 3 4 示例 4 Mybatis
  • python3的xpath_python3爬虫之xpath

    一 简介 XPath 是一门在 XML 文档中查找信息的语言 XPath 可用来在 XML 文档中对元素和属性进行遍历 XPath 是 W3C XSLT 标准的主要元素 并且 XQuery 和 XPointer 都构建于 XPath 表达之
  • 华为OD机试 - 最长连续子序列(Java)

    题目描述 有N个正整数组成的一个序列 给定整数sum 求长度最长的连续子序列 使他们的和等于sum 返回此子序列的长度 如果没有满足要求的序列 返回 1 输入描述 第一行输入是 N个正整数组成的一个序列 第二行输入是 给定整数sum 输出描
  • SpringCloud Alibaba Seata处理分布式事务

    文章目录 第一章 分布式事务问题 第二章 Seata简介 2 1 Seata是什么 2 2 Seata 整体工作流程 2 3 Seata AT 模式 2 3 1 AT 模式的前提 2 3 2 AT 模式的工作机制 2 4 下载 第三章 Se
  • react 事件绑定this指向

    一 使用class的实例方法 class Hello extends React Component onIncrement gt this setState count this state count 1 二 箭头函数
  • 如何透过上层div点击下层的元素解决方法

    如何透过上层div点击下层的元素解决方法 参考文章 1 如何透过上层div点击下层的元素解决方法 2 https www cnblogs com wei dong p 9928566 html 备忘一下
  • 可以估计不确定性的神经网络:SDE-Net

    作者丨段易通 知乎 来源丨https zhuanlan zhihu com p 234834189 编辑丨极市平台 随着深度学习技术的不断发展 DNN模型的预测能力变得越来越强 然而在一些情况下这却并不是我们想要的 比如说给模型一个与训练集
  • 多线程如何保证线程安全

    1 每次使用该对象的时候都创建一次 造成创建和销毁对象开销大 2 对方法进行加锁 造成线程阻塞性能差 3 使用ThreadLocal保证每个线程对同一个对象只创建一次 gt 较好的方法 ThreadLocal提供了线程的局部变量 每个线程都
  • windows下gvim打开文件显示乱码的解决

    问题 在windows中安装了gvim73 但是 使用gvim打开文件的时候 如果文件内容包含中文 那么 打开之后总是看到一堆乱码 解决办法 放狗搜了一下 发现这篇文章完美地解决了我的问题 http www douban com note
  • C. Doremy‘s IQ #808 div2

    Problem C Codeforces 题意就是给你一串序列 一个定值 如果对应的ai小于定值 就降智 否则直接过去 问你输出最多的方案 应该把心静一下的 思路不难想 对于我来说 应该是代码部分不太好实现 这个算是一个积累吧 思路是 尽量
  • 第八篇 算法————程序的灵魂

    2 1 程序 算法 数据结构 一个程序主要包括以下两方面的信息 1 对数据的描述 在程序中要指定哪些数据 以及这些数据的类型和数据的组织形式 这就是数据结构 2 对操作的描述 要求计算机进行操作的步骤 也就是算法 数据是操作的对象 操作的目
  • MSP432使用CCS模数转换(ADC)通用输入输出(GPIO)脉宽调制(PWM)通用异步接收器和发送器(UART)及其RTOS和机器人超声波距离检测

    示例 1 这段代码只会打开一个 P1 0 板载 LED 它是 MSP432 在寄存器级别的红色板载 LED include msp h void main void WDT A gt CTL WDT A CTL PW WDT A CTL H
  • Kubernetes中Pod容器的使用

    1 概述 Pod是K8S系统中可以创建和管理的最小单元 是资源对象模型中由用户创建或部署的最小资源对象模型 有许多组件围绕Pod进行扩展和支持 比如控制器对象是用来管控Pod对象的 Service或者Ingress资源对象是用来暴露Pod引
  • Vue之事件绑定

    何为事件绑定 当我们开发完UI界面后 还需要和用户交互 所谓交互也就是用户可以点击界面上的按钮 文字 链接等以及点击键盘上的按钮 我们开发的程序可以做出对应的反应 做出的反应会通过UI界面再反馈给用户 或是对话框 或是跳转到新页面 总之就是
  • Jupyter 的安装及使用

    一 Jupyter 是什么 Jupyter是它要服务的三种编程语言 Julia Python R 的缩写 Jupyter d u p t Julia 是一个面向科学计算的高性能动态高级程序设计语言 Python是一门编程语言 具有丰富强大的
  • 移动端Web页面适配方案(整理版)

    主要分为 百分比 rem vw vh 响应式设计 介绍 移动端web页面的开发 由于手机屏幕尺寸 分辨率不同 或者需要考虑横竖屏问题 为了使得web页面在不同移动设备上具有相适应的展示效果 需要在开发过程中使用合理的适配方案来解决这个问题
  • =' not supported between instances of 'str' and 'int'与must be str, not int报错' aria-label='python小白之TypeError: '>=' not supported between instances of 'str' and 'int'与must be str, not int报错'> python小白之TypeError: '>=' not supported between instances of 'str' and 'int'与must be str, not int报错

    1 当编程时出现 TypeError gt not supported between instances of str and int 这样的错误时 代码如下 age input 输入你的年龄 if age gt 18 print 你已成
  • 传统视觉轮廓识别

    传统视觉第二讲 学习任务 2023传统视觉第二讲 轮廓识别 传统视觉识别流程 对于输入的图片 使用各种图像处理手段 如颜色空间转换 二值化 形态学处理等得到一张只包含黑白两色的mask 再对mask进行轮廓提取 根据轮廓的长宽面积等特征筛选