首页 > 其他分享 >OpenCV(cv::drawContours())

OpenCV(cv::drawContours())

时间:2024-09-12 15:03:29浏览次数:9  
标签:drawContours OpenCV Scalar contours 轮廓 绘制 cv

目录



1. 函数原型

cv::drawContours() 用于在图像上绘制轮廓。函数原型:

void cv::drawContours(
    cv::InputOutputArray       image,
    const std::vector<std::vector<cv::Point>>& contours,
    int                        contourIdx,
    const cv::Scalar&          color,
    int                        thickness = 1,
    int                        lineType = 8,
    const cv::Mat&             hierarchy = cv::Mat(),
    int                        maxLevel = INT_MAX,
    cv::Point                  offset = cv::Point()
);

参数:

  • image: 输入输出图像,在其上绘制轮廓。
  • contours: 轮廓的集合,每个轮廓是一个点的向量。轮廓通常由 cv::findContours() 函数生成。每个轮廓是一个 std::vector<cv::Point> 对象,包含了一系列按顺序排列的点。
  • contourIdx: 该参数指定绘制哪个轮廓。
    • 取值 -1 表示绘制所有轮廓。
    • 非负值指定绘制特定索引的轮廓。
  • color: 绘制轮廓的颜色,类型是 cv::Scalar
    • 对于彩色图像,cv::Scalar(0, 255, 0) 表示绿色。
    • 对于灰度图像,cv::Scalar(255) 表示白色(轮廓)。
  • thickness: 轮廓线的厚度。
    • 取值:正整数,表示轮廓线的宽度。当为 -1cv::FILLED 表示填充轮廓内部区域。
  • lineType: 线条类型,指定绘制轮廓线的连接方式。
    • 8:8-connectivity(默认),连通性为8。
    • 4:4-connectivity,连通性为4。
    • CV_AA:抗锯齿线条(Anti-Aliasing),更平滑的线条,但计算更复杂。
  • hierarchy: 轮廓的层次结构矩阵(可选)。类型是 cv::Mat,通常由 cv::findContours() 函数返回。
  • maxLevel: 绘制的最大层级(可选)。
    • 取值:整数,INT_MAX 表示绘制所有层级的轮廓。
  • offset: 对绘制轮廓的坐标进行偏移(可选)。类型是 cv::Point,用于将所有轮廓点的坐标偏移到指定位置,通常用于处理多个图像拼接的情况。


2. 示例

cv::Mat img = cv::imread("image.jpg");
std::vector<std::vector<cv::Point>> contours;
cv::findContours(img, contours, cv::RETR_TREE, cv::CHAIN_APPROX_SIMPLE);
cv::drawContours(img, contours, -1, cv::Scalar(0, 255, 0), 2);
cv::imshow("Contours", img);
cv::waitKey(0);

在这个示例中,我们先找到轮廓,然后用绿色(cv::Scalar(0, 255, 0))和线宽为2绘制所有轮廓。



标签:drawContours,OpenCV,Scalar,contours,轮廓,绘制,cv
From: https://www.cnblogs.com/keye/p/18410200

相关文章

  • OpenCV(cv::getStructuringElement())
    目录1.函数原型2.示例3.使用场景1.函数原型cv::getStructuringElement()是OpenCV中一个用于生成结构元素的函数,结构元素在形态学操作(如膨胀、腐蚀等)中扮演了重要角色。cv::Matcv::getStructuringElement(intshape,cv::Sizeksize,cv::Pointanchor=cv::Point(-1......
  • python+opencv图片文字旋转矫正
    最近在使用实在RPA做机器人自动化,功能是受理单核对,即对核对业务受理人是否上传受理单承诺书方法很简单,由于系统中图片位置不固定,所以需要将所有附件进行下载,并进行图像文字识别,但是实在RPA中的OCR识别无法识别颠倒倾斜的图片,所以有两种方法,一种是使用其他OCR模型,一种是将图片旋转......
  • SPiT:超像素驱动的非规则ViT标记化,实现更真实的图像理解 | ECCV 2024
    VisionTransformer(ViT)架构传统上采用基于网格的方法进行标记化,而不考虑图像的语义内容。论文提出了一种模块化的超像素非规则标记化策略,该策略将标记化和特征提取解耦,与当前将两者视为不可分割整体的方法形成了对比。通过使用在线内容感知标记化以及尺度和形状不变的位置嵌入......
  • 实战OpenCV之像素操作
    基础入门        在OpenCV中,像素是最基本的操作单位。图像可以视为一个三维数组,其中第三维表示颜色通道。图像数据在内存中以连续或几乎连续的方式存储,对于多通道图像(比如:BGR图像),每个像素的各通道值紧密排列。OpenCV主要使用BGR色彩空间,与常用的RGB顺序不同。因此,在进......
  • lazarus交叉编译riscv64应用时编译出错取巧处理方法
    lazarus交叉编译riscv64应用时自带的memdataset/lazreporr等控件如果使用到formeditingintf.pas时链接时出现出类以下提示的错误:这是fpc引起的问题,也提交给lazarus/fpc官方,不知道啥能修复(希望官方最快修复这个Bug)。以下是网友英分享的修复方法(但本方法部分控件还存在链接问题),常......
  • 机器学习:opencv--图像金字塔
    目录一、图像金字塔1.图像金字塔是什么?2.有哪些常见类型?3.金字塔的构建过程4.图像金字塔的作用二、图像金字塔中的操作1.向下采样2.向上采样3.注意--无法复原三、代码实现1.高斯金字塔向下采样2.高斯金字塔向上采样3.无法复原4.拉普拉斯金字塔一、图像金字塔......
  • fastjson1.2.24反序列化漏洞复现 CVE-2017-18349
    1.准备:1.1复现环境漏洞环境:vulnhub靶场工具准备:jdk8,apache-maven-3.9.9,kali2024.1,MarshalSec1.2环境启动进入vulnhub目录下的fastjson目录,进入CVE-2017-18349目录cd/home/hbesljx/vulhub/fastjson/1.2.24-rcedocker-compoe启动漏洞环境docker-composeup-d访问靶机......
  • 构建安全畅通的道路网络:EasyCVR视频汇聚平台在道路监控中的创新应用
    随着城市化进程的加速和交通流量的不断增加,道路监控已成为确保交通安全、维护社会秩序的重要手段。道路上的监控摄像头多种多样,大致可以分为这几类:交通道路监控、治安监控、路口违章监控,以及车辆测速监控等。基于智慧交通的需求痛点,TSINGSEE青犀视频结合旗下产品EasyCVR视频汇聚平......
  • 构建安全畅通的道路网络:EasyCVR视频汇聚平台在道路监控中的创新应用
    随着城市化进程的加速和交通流量的不断增加,道路监控已成为确保交通安全、维护社会秩序的重要手段。道路上的监控摄像头多种多样,大致可以分为这几类:交通道路监控、治安监控、路口违章监控,以及车辆测速监控等。基于智慧交通的需求痛点,TSINGSEE青犀视频结合旗下产品EasyCVR视频汇......
  • 校园安全无小事,EasyCVR视频综合管理平台助力智慧校园视频监控系统全面升级
    随着信息技术的飞速发展,智慧校园作为教育信息化的重要载体,正逐步成为提升校园安全管理、优化教育资源配置、增强师生互动体验的关键手段。其中,高效、智能的视频监控系统作为智慧校园不可或缺的一部分,扮演着至关重要的角色。TSINGSEE青犀EasyCVR视频汇聚平台,凭借其强大的视频接......