OpenCV findTours函数及其用法

news2025/1/12 23:16:10

        OpenCV findTours函数主要用以寻找图像中物体的轮廓,其原型如下:

indTours 函数参数:

        Image 输入图像,需8位单通道图像。非零像素被视为1。零像素保持为0,因  此图 像被视为                     二进制。您可以使用compareinRangethresholdadaptiveThresholdCanny等                       从灰度或彩色图像中创建二值图像。如果模式等于RETR_CCOMP或                                               RETR_FLOODILL,则输入也可以是32位整数图像(CV_32SC1)。

        Conturs 检测到的轮廓。每个轮廓都存储为点的向量(例如std:vector<std::                                              vector<cv:: Point>>)。

        Hierarchy 可选输出向量(例如std:vector<cv:Vec4i>),包含有关图像拓扑的信息。它                             的元素数量与轮廓的数量一样多。对于每个第i个轮廓[i],元素层次[i][0]、层次[i]                               [1]、层次[i][2]和层次[i][3]分别设置为相同层次级别的下一个和前一个轮廓、第一个                             子轮廓和父轮廓的轮廓中基于0的索引。如果轮廓i没有下一个、上一个、父轮廓                               或嵌套轮廓,则层次[i]的相应元素将为负。

        method  轮廓近似法,有以下几种:

        offset 每个轮廓点偏移的可选偏移量。如果轮廓是从图像ROI中提取的,然后应该在整个图像                     上下文中进行分析,那么这就很有用。

        用法示例:

        新建一个对话框程序,在程序中加入如下代码:

#include<sstream>
#include <iostream>
#include <opencv2/opencv.hpp>

using namespace cv;
using namespace std;

int main(int argc, char** argv)
{
    Mat src = imread("1.jpg");
    
    cout << src.type() << "\t"<< src.channels() << "\t"  << src.rows << "\t"  << src.cols <<endl;
    //imshow("Input Image", src);
    Mat src1;
    cvtColor(src, src1, COLOR_RGBA2GRAY);
    Mat erodeimg;
    Mat  kernel = getStructuringElement(MORPH_RECT, Size(5, 5));
    erode(src1,erodeimg,kernel);

    Mat blurimg;
    medianBlur(erodeimg, blurimg, 33);

    Mat threimg;
    threshold(blurimg, threimg, 80, 255, THRESH_BINARY);
    imshow("threshold result", threimg);

    vector<vector<Point>> conturs;
    vector<Vec4i> hierarchy;
    Mat res = Mat::zeros(src.size(),CV_8UC3);
    findContours(threimg, conturs, hierarchy,RETR_EXTERNAL, CHAIN_APPROX_SIMPLE);
    //findContours(threimg, conturs, NULL, CHAIN_APPROX_SIMPLE);
    if (conturs.size() == 0)
    {
        cout << "No objiect is found\n\t";
    }
    else
        cout << conturs.size() << endl;	

试运行,结果如下:

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2064620.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【数据分享】《全国能源-分行业煤油消费总量》(2000-2020年)

而今天要限时免费分享的数据就是2000-2020年间出版的《全国能源-分行业煤油消费总量》并以多格式提供免费下载。&#xff08;无需分享朋友圈即可获取&#xff09; 数据介绍 在过去的二十年里&#xff0c;中国作为全球能源消费的重要力量&#xff0c;其能源结构的变化不仅影…

基于x86 平台opencv的图像采集和seetaface6的图像质量评估功能

目录 一、概述二、环境要求2.1 硬件环境2.2 软件环境三、开发流程3.1 编写测试3.2 配置资源文件3.2 验证功能一、概述 本文档是针对x86 平台opencv的图像采集和seetaface6的图像质量评估功能,opencv通过摄像头采集视频图像,将采集的视频图像送给seetaface6的图像质量评估模块…

21.1 基于Netty实现聊天

21.1 基于Netty实现聊天 一. 章节概述二. `Netty`介绍三. 阻塞与非阻塞1. 阻塞与非阻塞简介2. BIO同步阻塞3. NIO同步非阻塞4. AIO异步非阻塞IO5. 异步阻塞IO(用的极少)6. 总结四. Netty三种线程模型1. 单线程模型2. 多线程模型3. 主从线程模型五. 构建Netty服务器************…

DDL——三范式与表约束

目录 一、三大范式 1.范式的定义 2.第一范式 3.第二范式 4.第三范式 二、表约束 1.约束的定义 2.非空约束&#xff08;not null&#xff09; 3.唯一性约束&#xff08;unique&#xff09; 4.主键约束&#xff08;primary key&#xff09; 5.外键约束&#xff08;fo…

可集成多模型的机器人开发框架 dora:让机器人编程走向大众

作者 | Annie Xu 责编 | 何苗 出品 | GOSIM 开源创新汇 C 和 C是机器人编程中常用的编程语言&#xff0c;但学起来存在一定难度。那些对机器人感兴趣&#xff0c;但没有精力花费数周时间学习 C 和 C编程的用户只能望而却步。 为了让机器人技术变得更简单&#xff0c;陶海轩&a…

AWS SAM CLI 备忘单!

安装 AWS SAM CLI brew tap aws/tap brew 安装 aws-sam-cli 验证安装 $ sam --version 升级 SAM $ brew upgrade aws-sam-cli 您需要 AWS 凭证才能在 AWS 上工作。 构建并部署简单应用程序 $ sam init→ 下载示例应用程序 $ sam build→ 构建您的应用程序 $ sam deploy --guid…

机器学习:决策树回归树实现

1、决策树&#xff1a; 是一种树形结构&#xff0c;用于通过一系列的是非问题来预测目标值。在决策树回归中&#xff0c;树的叶子节点代表预测的连续值。 2、数据准备&#xff1a; 收集数据集&#xff0c;并对其进行清洗和预处理。 将数据集分为特征&#xff08;X&#xff09;…

git-20240822

目录 初始化仓库 Git init Git init project --bare 查看提交的记录 git log --prettyoneline 查看当前git远程库地址 git remote -v 查看详细提交记录 git log 撤出暂存区的文件 git reset HEAD file(.代表全部文件&#xff09; 提交数据到远程仓库 git config --global push.…

4.6算法之贪心_702:Crossing River

题目 702:Crossing River 总时间限制: 1000ms 内存限制: 65536kB 描述 A group of N people wishes to go across a river with only one boat, which can at most carry two persons. Therefore some sort of shuttle arrangement must be arranged in order to row the boat…

【TB作品】普中V2,数字时钟万年历显示,音乐闹钟,流水灯,Proteus仿真

文章目录 功能硬件原理图LCD1602独立按键LED灯ds1302蜂鸣器 引脚汇总按键功能code 功能 带闹钟和花样流水灯的LCD数显实时时钟设计&#xff08;运用DS1302时钟模块&#xff0c;LCD显示&#xff0c;带万年历&#xff0c;时间到响音乐显示花样流水灯&#xff09; 万年历显示 按…

禹神:三小时快速上手TypeScript,TS速通教程(上篇、中篇、下篇,3合1笔记),根据视频整理

TypeScript快速上手 &#x1f4da;一、TypeScript简介 1.TypeScript由微软开发&#xff0c;是其于JavaScript的一个扩展语言. 2.TypeScript包含了JavaScript的所有内容&#xff0c;即&#xff1a;TypeScript是JavaScript的超集 3.TypeScript增加了&#xff1a;静态奖型检查、接…

Win10安装ChatTTS-2024-cuda10.1

0x00 前言 ChatTTS是专门为对话场景设计的文本转语音模型&#xff0c;例如大语言助手对话任务。它支持英文和中文两种语言。最大的模型使用了10万小时以上的中英文数据进行训练。目前在huggingface中的开源版本为4万小时训练且未SFT的版本。 0x01 准备环境 版本操作系统Win1…

大模型参数高效微调技术总结

基础知识 最近&#xff0c;OpenAI推出的ChatGPT展现出了卓越的性能&#xff0c;引发了大规模语言模型(Large Language Model, LLM)的研究热潮。大规模语言模型的“大”体现在两个方面&#xff1a;模型参数规模大&#xff0c;训练数据规模大。以GPT3为例&#xff0c;GPT3的参数…

springboot集成redis之接口缓存

什么是redis的接口缓存&#xff1f; Redis的接口缓存是一种利用Redis这种内存数据库来存储接口&#xff08;API&#xff09;响应数据的技术&#xff0c;以提高应用程序的响应速度和性能。具体来说&#xff0c;当用户请求一个接口时&#xff0c;系统会首先检查Redis缓存中是否已…

windows vs2022 MFC使用webview2嵌入网页

Microsoft Edge WebView2 控件允许在本机应用中嵌入 web 技术(HTML、CSS 以及 JavaScript)。 WebView2 控件使用 Microsoft Edge 作为绘制引擎&#xff0c;以在本机应用中显示 web 内容。 一、通过菜单“项目”-“管理NuGet程序包”&#xff0c;下载相关包 二、安装 Microsof…

windows ssh launch Jenkins

一、 windows server2012 ssh launch jenkins 经过一系列测试验证发现&#xff0c;windows server2012始终无法launch到jenkins master。配置ssh之后 [08/21/24 10:08:03] [SSH] Opening SSH connection to 172.xx.xx.xx:18822. [08/21/24 10:08:03] [SSH] WARNING: SSH Host …

DBeaver连接GBase 8s数据库的步骤

最近在学习国产数据库GBase 8s。酷酷一顿操作后&#xff0c;发现自带的 dbaccess 不好用&#xff0c;然后尝试用DBeaver这种图形界面来尝试使用。 本次使用工具&#xff1a; 1、dbeaver-ce-24.1.4 2、GBase 8s Server 8.8 一、搭建环境&#xff0c;官方建议使用的是CentOS 7.3&…

vue 实现批量引入组件

批量引入组件 1.目录示例2.被引入组件示例3.全局注册方法3.1.require.context() 是什么3.2.require.context() 用法 4.使用全局注册方法5.使用 1.目录示例 2.被引入组件示例 注意&#xff1a;必须要有name <template><div>Hkmxdy</div> </template> &l…

【学习笔记】Day 21

一、进度概述 1、机器学习常识19-22&#xff0c;以及相关代码复现 二、详情 19、矩阵分解 矩阵分解是一个纯数学问题&#xff0c;但当给矩阵赋予现实意义后&#xff0c;矩阵分解就成为了使用数学应对机器学习问题的一类典型而巧妙的方法。 在线性回归分析中&#xff…

PaddleNLP 3.0 支持大语言模型开发

huggingface不支持模型并行。张量并行&#xff0c;不满足大规模预训练的需求。 1、组网部分 2、数据流 3、训练器 4、异步高效的模型存储