OpenCV中findContours函数的使用

OpenCV findContours函数 文章目录findContours()函数函数功能函数原型参数说明测试:mode与method取值问题检测最外层轮廓,并且保存轮廓上所有点检测所有轮廓,但各轮廓之间彼此独立,不建立等级关系,并且仅保存轮廓上拐点信息检测所有轮廓,轮廓间建立外层、内层的等级关系,并且保存轮廓上所有点Point()偏移量设置 findContours()函数 函数功能 检测出物体的轮廓 函数原型 findContours( InputOutputArray image, OutputArrayOfArrays contour 阅读详情

从二值图像中找出对象的轮廓:

OpenCV中函数findContours()用于中对象的轮廓,有两种形式:

第一种:

void findContours( InputOutputArray image, OutputArrayOfArrays contours,
                              int mode, int method, Point offset=Point());

第二种:

void findContours( InputOutputArray image, OutputArrayOfArrays contours,
                              OutputArray hierarchy, int mode,
                              int method, Point offset=Point());


参数:

contours:是找到的各个轮廓

mode :CV_RETR_EXTERNAL找到的轮廓里面没有小轮廓(洞),CV_RETR_LIST找到的轮廓中可以包括小轮廓

hierarchy:层次结构,存放了轮廓同一等级的前后轮廓的索引,不同等级的父亲轮廓和孩子轮廓的索引

method:CV_CHAIN_APPROX_NONE获取轮廓上所有像素点

代码:运行环境(VS2012 + OpenCV2.4)

#include "highgui.h"
#include "imgproc/imgproc.hpp"

int main()
{
	cv::Mat image = cv::imread("D:/Development/OpenCV/images/binaryGroup.bmp" , 0) ;
	std::vector<std::vector<cv::Point>> contours ;
	//获取轮廓不包括轮廓内的轮廓
	cv::findContours(image , contours , 
		CV_RETR_EXTERNAL , CV_CHAIN_APPROX_NONE) ;
	cv::Mat result(image.size() , CV_8U , cv::Scalar(255)) ;
	cv::drawContours(result , contours ,
		-1 , cv::Scalar(0) , 2) ;
	cv::imshow("resultImage" , result) ;
	
	//获取所有轮廓包括轮廓内的轮廓
	std::vector<std::vector<cv::Point>> allContours ;
	cv::Mat allContoursResult(image.size() , CV_8U , cv::Scalar(255)) ;
	cv::findContours(image , allContours ,
		CV_RETR_LIST , CV_CHAIN_APPROX_NONE) ;
	cv::drawContours(allContoursResult , allContours ,-1 ,
		cv::Scalar(0) , 2) ;
	cv::imshow("allContours" , allContoursResult) ;

	//获取轮廓的等级
	std::vector<cv::Vec4i> hierarchy ;
	cv::findContours(image , contours , hierarchy , CV_RETR_TREE ,
		CV_CHAIN_APPROX_NONE) ;

	cv::waitKey(0) ;
	return 0 ;

1、获取包围对象的垂直矩阵

cv::Rect r0= cv::boundingRect(cv::Mat(contours[0]));
cv::rectangle(result,r0,cv::Scalar(0),2);

2、获取包围对象的最小圆

cv::Rect r0= cv::boundingRect(cv::Mat(contours[0]));
cv::rectangle(result,r0,cv::Scalar(0),2);

3、获取包围对象的多边形

// testing the approximate polygon
std::vector<cv::Point> poly;
cv::approxPolyDP(cv::Mat(contours[2]),poly,
5, // accuracy of the approximation
true); // yes it is a closed shape

4、获得包围对象的凸包

// testing the convex hull
std::vector<cv::Point> hull;
cv::convexHull(cv::Mat(contours[3]),hull);

5、获取各个对象的质心

itc= contours.begin();
while (itc!=contours.end()) {
// compute all moments
cv::Moments mom= cv::moments(cv::Mat(*itc++));
// draw mass center
cv::circle(result,
// position of mass center converted to integer
cv::Point(mom.m10/mom.m00,mom.m01/mom.m00),
2,cv::Scalar(0),2); // draw black dot
}

注意:findContours()函数会改变图像

opencv基础47 图像轮廓查找cv2.findContours()介绍及示例 图像轮廓是指图像中物体边缘的连续性曲线。在计算机视觉和图像处理中,轮廓通常被用于检测物体、分割图像以及提取物体特征。图像轮廓是由一系列连续的像素点组成,这些像素点位于物体边界上。轮廓的特点是在物体和背景之间的边界位置,因此可以用来表示物体的形状和结构。轮廓可以是闭合的,也可以是开放的,具体取决于物体的形状。 阅读详情

相关推荐

opencv cv.findContours 函数详解

函数 cv.findContours contours, hierarchy = cv.findContours( image, mode, method[, contours[, hierarchy[, offset]]] ) 参数1:源图像 参数2:轮廓的检索方式,这篇文章主要讲解这个参数 参数3:一般用 cv.CHAIN_APPROX_SIMPLE,就表示用尽可能少的像素点表示轮廓 co...

Ibelievesunshine的博客 1万+

OpenCV——findContours函数的使用(基于Mat轮廓处理基础)

本文所有代码参考OpenCV 300 目录 1.提取轮廓 2.绘制轮廓 3.获取轮廓最小外接矩形 4.获取轮廓最小外接圆 5.填充RotatedRect 1.提取轮廓 void findContours//提取轮廓,用于提取图像的轮廓 ( InputOutputArray image,//输入图像,

我不是校长的博客 1万+

Opencv笔记——findContours函数

对Opencv的findContours函数各个参数的解释以及一些测试图像。主要是针对函数的mod参数中CV_RETR_TREE和CV_RETR_CCOMP两种方法进行测试和比较。

殷硕的专栏 5万+

findContours函数参数详解

注: 这篇文章用的OpenCV版本是2.4.10, 3以上的OpenCV版本相关函数可能有改动Opencv中通过使用findContours函数,简单几个的步骤就可以检测出物体的轮廓,很方便。这些准备继续探讨一下findContours方法中各参数的含义及用法,比如要求只检测最外层轮廓该怎么办?contours里边的数据结构是怎样的?hierarchy到底是什么鬼...

weixin_30822451的博客 9585

实现OPENCV之findcontours函数(一)

二值图像处理中,有一个重要的函数就是findcontours,这是用来提取轮廓函数,并且将轮廓关系存储下来。 函数原型如下CV_EXPORTS_W void findContours( InputOutputArray image, OutputArrayOfArrays contours, OutputArray hierarchy, int

silen_ability的博客 2223

OpenCV轮廓、边缘、边界的相关函数cv::findContours()等

OpenCV支持大量的轮廓、边缘、边界的相关函数,相应的函数有moments、HuMoments、findContours、 drawContours、approxPolyDP、arcLength、boundingRect、contourArea、convexHull、 fitEllipse、fitLine、isContourConvex、minAreaRect、minEnclosingCircl

u010285110的专栏 3410

OpenCV findContours函数参数

OpenCV2-------findContours函数参数详解 原文:https://blog.youkuaiyun.com/qq_34374664/article/details/82254727 Opencv中通过使用findContours函数,简单几个的步骤就可以检测出物体的轮廓,很方便。这些准备继续探讨一下 findContours方法中各参数的含义及用法,比如要求只检测最外层轮廓该怎么办?...

jacke121的专栏 1万+

Opencv::findContours函数参数说明及相关函数

findContours 寻找连通量函数

潜心 3544

OpenCV中的findContours函数参数详解

OpenCV中通过使用findContours函数,简单几个的步骤就可以检测出物体的轮廓,很方便。这些准备继续探讨一下 findContours方法中各参数的含义及用法,比如要求只检测最外层轮廓该怎么办?contours里边的数据结构是怎样 的?hierarchy到底是什么鬼?Point()有什么用? 先从findContours函数原型看起:

小白_努力 14万+

36-OpenCVSharp —- Cv2.FindContours()函数功能(轮廓检测)详解

是 OpenCV 中非常重要的图像处理函数,能够帮助我们从二值图像中提取物体的轮廓。它广泛应用于图像分割、物体检测、形态学分析等多个领域。通过合理选择参数和搭配其他图像处理算法,我们可以高效地完成轮廓提取及相关的后续分析任务。在实际应用中,使用时需要注意图像预处理、轮廓精度及算法的优化等问题,以提高效率和准确性。《 OpenCV功能使用详解200篇 》《 OpenCV算子使用详解300篇 》《 Halcon算子使用详解300篇 》

weixin_45590420的博客 4120

OpenCV中的findContours函数实战详解

在数字图像处理中,轮廓(Contour)是指图像中连续的边界点组成的闭合曲线。这些点通常有着相似的像素强度,可以将具有相同或相近特征的区域划分开。轮廓是物体形状和结构的重要表征,可以帮助我们理解图像内容,并为进一步的图像分析提供依据。在二维图像中,轮廓通常表现为边缘点的集合。在处理时,我们通常首先对图像进行边缘检测,然后将检测到的边缘点组织成轮廓。在OpenCV库中,函数正是用来提取图像中的轮廓信息。

weixin_30598047的博客 788

OpenCV findContours函数的参数使用详解

OpenCV中的findContours函数是用来检测物体的轮廓,下面详细说明一下这个函数各参数的意义以及使用。Python代码中的findContours函数如下: findContours(image, mode, method, contours=None, hierarchy=None, offset=None) image:输入的二值图像。 mode:定义轮廓的检索模式,可选项为...

qq_24185239的博客 6338

什么事LLVM和Clang?Clang与GCC有什么区别?Clang如何使用?

这个问题主要讲Xcode编译器的认知,在学习iOS之前有必要学习一下Objective-C的编译环境。 在了解LLVM和Clang之前,先得了解一下什么是编译器。 编译器是一种计算机程序,它将某种编程语言(高级编程语言)写成的源代码转换成另一种编程语言(低级编程语言)。一个现代编译器的主要工作流程为:源代码->预处理器->编译器->目标代码->链接器->可执行程序...

Welcome~ 9724

opencv 之 findcontours() 函数详解

OpenCV中通过使用findContours函数,简单几个的步骤就可以检测出物体的轮廓,很方便。这些准备继续探讨一下 findContours方法中各参数的含义及用法,比如要求只检测最外层轮廓该怎么办?contours里边的数据结构是怎样 的?hierarchy到底是什么鬼?Point()有什么用? 先从findContour...

yongxian_zhao的博客 5427

webview腾讯x5内核离线安装

离线集成腾讯TBS浏览器服务,彻底解决官方下载限流问题,永久免费

观千剑而后识器,操千曲而后晓声。 7921

SolidWorks+ADAMS双验证:你的机械臂力矩计算真的靠谱吗?

本文探讨了机械臂力矩计算中手工计算的局限性,并介绍了SolidWorks和ADAMS双验证方法的重要性。通过实际案例展示了动态工况下传统计算方法的误差,详细解析了SolidWorks精准质心捕捉和ADAMS动力学仿真的关键技术,帮助工程师构建计算-仿真-实测闭环验证流程,确保机械臂设计的可靠性和安全性。

grafana6viz的博客 230

探秘OpenCV中的findContours函数

探秘OpenCV中的findContours函数

qq_46017342的博客 3950

OpenClaw智能体应用第一集--飞书多智能体配置

本文介绍了智能体(Agent)的核心概念与配置实践。Agent作为独立作用域的"大脑",包含模型(认知引擎)、记忆系统(短期/长期记忆)、人设(角色定义)、工具(外部能力调用)、规划执行(任务拆解)、运行环境等核心要素。每个Agent拥有唯一agentId标识,通过accountId区分渠道账号,Binding机制实现消息路由。实践部分展示了通过命令行配置多个智能体(如writer)的过程,包括插件注册和工具加载。系统支持多Agent架构,可根据不同场景需求灵活配置专属智能体。

weixin_44626085的博客 1749

opencv.cv2.findContours()函数

转自 OpenCV-Python接口中使用cv2.findContours()函数来查找检测物体的轮廓。 实现 使用方式如下: [python] view plaincopy import cv2      img = cv2.imread('D:\\test\\contour.jpg')   gray = cv2.cvt

gaoranfighting的专栏 6万+

Pixhawk RPi CM4 Baseboard 树莓派CM4安装Ubuntu20.04 server 配置ros mavros mavsdk

cm4配置ros mavros连接pixhawk4 Pixhawk RPi CM4 Baseboard

baidu_41704597的博客 2128

Matlab_Marr小波尺度变换图

多尺度的连续小波变换分解后时间尺度图 墨西哥Marr小波函数: %delta 小波变换尺度 %N     小波函数的长度 %s     原始信号 %g     原始信号某个尺度下的小波变化系数 function g=Singularity_Detection(delta,N,s); %保持信号长度 n=length(s); % 构造墨西哥小帽小波函数 for index_x=1

桔色小西瓜 6602

Opencv-绘制图像轮廓(findContours()函数)

绘制图像轮廓,findContours()函数

qq_46443233的博客 2147

PyTorch深度学习项目实战100例数据集

最近很多订阅了的用户私信咨询有些数据集下载不了以及一些文章中没有给出数据集链接,为了解决这个问题,专门开设了本篇文章,提供数据集下载链接,打包100例的所有数据集。本专栏适用人群:深度学习初学者,专栏将具体讲解如何快速搭建深度学习模型用自己的数据集实现深度学习小项目。 本专栏整理了《PyTorch深度学习项目实战100例》,内包含了各种不同的深度学习项目,包含项目原理以及源码,每一个项目实例都附带有完整的代码+数据集。

优快云 精品推荐 2万+

opencv的findContours()函数

来自WaTab AI Pro是 OpenCV 中用于检测图像轮廓的函数。轮廓可以看作是将连续的点(沿边界)连接在一起的一条曲线,具有相同的颜色或强度。该函数常用于图像处理和计算机视觉中的对象检测和识别。下面是的详细解释及其用法。

xulibo5828的博客 3536

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

opencv 中findContours函数介绍

opencv4 中findContours函数介绍 findContours 这个函数的主要功能是找到contours也就是边界线,不过这个函数主要是给灰度图对象服务的。 函数的使用介绍: findContours(image, mode, method[, contours[, hierarchy[, offset]]]) -> contours, hierarchy 返回值contours, hierarchy, contours是返回的轮廓,hierarchy没有学所有还不清楚 使用的时候主要注

MLLNFBJY的博客 1940

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

上一篇: Hough Transform(霍夫变换)检测Circle(圆)的几种方法
下一篇: Corners检测
知行且执行
博客等级 码龄14年 38粉丝 73原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值