一、知识点
1、void polylines(InputOutputArray img, InputArrayOfArrays pts, bool isClosed, const Scalar & color, int thickness = 1, int lineType = LINE_8, int shift = 0 );
  (1)、在图像上绘制多边形曲线。
  (2)、参数说明:
      img: 输入、输出参数,要绘制多边形曲线的图像。
      pts: 多边形曲线的顶点数组。
      isClosed: 标志多边形曲线是否闭合。 若为true,则在最后一个顶点和第一个顶点之间绘制一条线段。
      color: 多边形曲线的颜色。
      thickness: 多边形曲线的粗细。
      lineType: 线条的类型,如8连通、4连通、抗锯齿等。
      shift: 点坐标中的小数位数。
  (3)、注意: thickness在此函数中只能大于0,否则运行会报错。 所以polylines()只能绘制,不能填充多边形。
      
2、void fillPoly(InputOutputArray img, InputArrayOfArrays pts, const Scalar & color, int lineType = LINE_8, int shift = 0, Point offset = Point());
  (1)、在图像上填充多边形。
  (2)、参数说明:
      img: 输入、输出参数,要填充多边形的图像。
      pts: 多边形的顶点数组。
      color: 多边形填充的颜色。
      lineType: 线条的类型,如8连通、4连通、抗锯齿等。
      shift: 点坐标中的小数位数。
      offset: 轮廓所有点的可选偏移。
      
3、void drawContours(InputOutputArray image, 
                    InputArrayOfArrays contours, 
                    int contourIdx, 
                    const Scalar & color,
                    int thickness = 1, 
                    int lineType = LINE_8, 
                    InputArray hierarchy = noArray(),
                    int maxLevel = INT_MAX, 
                    Point offset = Point());

  (1)、在图像上绘制轮廓或填充轮廓。
  (2)、参数说明:
      image: 输入、输出参数,要绘制或填充轮廓的图像。
      contours: 所有轮廓的点集数组。
      contourIdx: 要绘制的轮廓的索引(从0开始)。 如果为负,表示绘制或填充所有的轮廓。
      color: 要绘制或填充的轮廓的颜色。
      thickness: >0时表示轮廓线框粗细,<0时表示填充轮廓。
      lineType: 线条的类型,如8连通、4连通、抗锯齿等。
      hierarchy: 关于层次结构的可选信息。
      maxLevel: 绘制轮廓的最大级别。
      offset: 轮廓所有点的可选偏移。


二、示例代码

#include <iostream>
#include <opencv2/opencv.hpp>int main()
{cv::Mat canvas = cv::Mat::zeros(cv::Size(512, 512), CV_8UC3);//定义多边形的多个顶点cv::Point p1(100, 100);cv::Point p2(350, 100);cv::Point p3(450, 280);cv::Point p4(320, 480);cv::Point p5(80, 400);//变成一个点集std::vector<cv::Point> pts;pts.push_back(p1);pts.push_back(p2);pts.push_back(p3);pts.push_back(p4);pts.push_back(p5);//绘制多边形(只能绘制,不能填充, thickness只能>0)cv::polylines(canvas, pts, true, cv::Scalar(0, 0, 255), 4, 8, 0);//填充多边形cv::fillPoly(canvas, pts, cv::Scalar(255, 255, 0), 8, 0);//创造两个点集std::vector<cv::Point> pts1;pts1.push_back(cv::Point(15, 20));pts1.push_back(cv::Point(75, 20));pts1.push_back(cv::Point(65, 60));pts1.push_back(cv::Point(30, 40));std::vector<cv::Point> pts2;pts2.push_back(cv::Point(25, 25));pts2.push_back(cv::Point(100, 30));pts2.push_back(cv::Point(65, 60));pts2.push_back(cv::Point(20, 25));std::vector<std::vector<cv::Point>> vvpts;vvpts.push_back(pts1);vvpts.push_back(pts2);//用红色线画出两个轮廓cv::drawContours(canvas, vvpts, -1, cv::Scalar(0, 0, 255), 4, 8);//用黄色填充第1个轮廓cv::drawContours(canvas, vvpts, 0, cv::Scalar(0, 255, 255), -1, 8);//用洋红填充第2个轮廓cv::drawContours(canvas, vvpts, 1, cv::Scalar(255, 0, 255), -1, 8);cv::imshow("多边形绘制", canvas);cv::waitKey(0);return 0;
}

输出结果:

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

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C#接口代码记录

using System;namespace InterfacesExample {// 定义接口public interface INBAPlayable{void KouLan();}public interface ISupermanable{void Fly();}// 基类public class Person{public void CHLSS(){Console.WriteLine("人类吃喝拉撒睡");}}// Student 类实现多个…

SpringDataJpa实体类中属性顺序与数据库中生成字段顺序不一致的问题

自己写的代码覆盖hibernate中的代码 翻了翻源码发现&#xff0c;很多地方都是使用LinkedHashMap或者是List来传输Entity里面的fields&#xff0c;于是感觉Hibernate应该是考虑到使用Entity里面定义的fields的顺序来实现建表语句里的表字段顺序的。   于是就一步步跟踪下去&…

软件架构期末复习

题型 填空题 20分,2分/空,10空 选择题 30分,2分/题,15题 简答题 30分,6分/题,5题(概念+分析) 案例分析题 20分,5个小题(综合) 分值:体系结构、设计模式各占50% 考试内容 体系结构 SA基础(SA03PPT):SA概念、SA与软件过程(阶段)的关系、SA核心概念模型(重要…

Oracle ADG 日常巡检指南

一、基础状态检查 数据库角色与模式 SELECT db_unique_name, open_mode, database_role, switchover_status FROM v$database;预期状态&#xff1a; 主库&#xff1a;OPEN_MODEREAD WRITE, DATABASE_ROLEPRIMARY备库&#xff1a;OPEN_MODEREAD ONLY WITH APPLY, DATABASE_ROLE…

【MV】key_moments 与 continuous_timeline的编排权衡

一、编排顺序: key_moments → continuous_timeline* 建议使用顺序:key_moments → continuous_timeline 📊 两者关系 key_moments:从continuous_timeline中精选出来的重点(约11个关键时间点)continuous_timeline:完整的时间轴(37个片段,覆盖每句歌词)🎭 实际编…

Tomcat线程模型

目录 1 Linux I/O模型 2 Linux I/O模型分类 3 Tomcat支持的I/O模型 4 Tomcat I/O模型选型 5 Tomcat NIO实现 6 Tomcat异步IO实现 1 Linux I/O模型 I/O&#xff1a;在计算机内存和外部设备之间拷贝数据的过程程序通过cpu向外部设备发出读指令&#xff0c;数据从外部设置拷贝至内…

最新Spring Security实战教程企业级安全方案设计实现

最新Spring Security实战教程&#xff08;十七&#xff09;企业级安全方案设计 - 多因素认证&#xff08;MFA&#xff09;实现 1. 前言2. 为什么需要多因素认证&#xff1f; 传统认证的风险MFA的核心优势常见多因素认证实现方案 3. 多因素认证的核心原理4. 系统架构与流程设计…

十九、【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建

【用户管理与权限 - 篇一】后端基础:用户列表与角色模型的初步构建 前言准备工作第一部分:回顾 Django 内置的 `User` 模型第二部分:设计并创建 `Role` 和 `UserProfile` 模型第三部分:创建 Serializers第四部分:创建 ViewSets第五部分:注册 API 路由第六部分:后端初步测…

大话软工笔记—架构的概要设计

架构的概要设计是在需求工程分析成果的基础之上对整个系统进行的顶层规划&#xff0c;重点是确定设计规范&#xff08;理念、主线等&#xff09;&#xff0c;从大的范围和高度对业务进行规划和设计&#xff0c;架构概要设计的成果“业务架构图”&#xff0c;是后续各阶段设计的…

Flink CDC —部署模式

一、Standalone 模式 独立模式是Flink最简单的部署模式。本简短指南将向您展示如何下载最新稳定版本的Flink&#xff0c;安装和运行它。 您还将运行一个示例Flink CDC作业&#xff0c;并在web UI中查看它。 1、准备 Flink在所有类似UNIX的环境中运行&#xff0c;即Linux、Mac…

day029-Shell自动化编程-计算与while循环

文章目录 1. read 交互式初始化变量1.1 案例-安装不同的软件1.2 案例-比较大小 2. 计算2.1 bc2.2 awk2.3 expr2.4 let2.5 案例-计算内存的空闲率2.6 案例-检查域名过期时间和https证书过期时间 3. 循环3.1 循环控制语句3.2 for循环-c语言格式3.3 while循环3.3.1 案例-猜数字3.3…

华为云Flexus+DeepSeek征文 | 基于华为云ModelArts Studio打造AingDesk AI聊天助手

华为云FlexusDeepSeek征文 | 基于华为云ModelArts Studio打造AingDesk AI聊天助手 引言一、ModelArts Studio平台介绍华为云ModelArts Studio简介ModelArts Studio主要特点 二、安装AingDesk应用AingDesk应用介绍下载地址安装AingDesk工具 三、开通DeepSeek-R1-0528商用服务访问…

深度解析Git错误:`fatal: detected dubious ownership in repository` 的根源与解决方案

如果你是在使用自己的移动硬盘&#xff08;U盘&#xff09;操作项目时遇到的这个问题直接执行git config --global --add safe.directory X:/path即可&#xff0c;只要你的移动硬盘&#xff08;U盘&#xff09;没有病毒就不会有安全问题。 深度解析Git错误&#xff1a;fatal: d…

基于Spring Boot的校园社区平台设计与实现

目录 一.&#x1f981;前言二.&#x1f981;开源代码与组件使用情况说明三.&#x1f981;核心功能1. ✅算法设计2. ✅Thymeleaf模板引擎3. ✅MyBatis Plus框架4. ✅部署项目 四.&#x1f981;演示效果1. 管理员模块1.1 用户管理1.2 浏览管理员首页1.3 论坛管理1.4 校园咨询管理…

Java 8 Map 新增方法详解

Java 8 Map 新增方法详解 1. getOrDefault 源码&#xff1a; default V getOrDefault(Object key, V defaultValue) {V v;return (((v get(key)) ! null) || containsKey(key))? v: defaultValue;}作用&#xff1a;安全获取值&#xff0c;若key不存在则返回默认值 示例&…

山东大学 2025 web数据管理期末复习总结

SDU-2025年-Web数据管理期末总结 考试题型 填空 &#xff1a;都来自于PPT中名词解释简答题&#xff1a;需要背一些公式。 根据L老师上课提及的重点一共总结了87问题。 文章目录 SDU-2025年-Web数据管理期末总结考试题型第1讲 绪论此章不考 第2讲 网络爬虫技术2.1 爬虫是什么…

Spring框架的设计模式

Spring 框架深度集成了多种经典设计模式&#xff0c;这些模式支撑了其核心功能&#xff08;如IoC、AOP&#xff09;的实现&#xff0c;以下是关键模式及其应用场景的梳理&#xff1a; 1、工厂模式 工厂模式&#xff08;Factory Pattern&#xff09;是 Java 中最常用的设计模式…

git报错fatal: 远端意外挂断了

git报错fatal: 远端意外挂断了 报错详细内容 mr.mbogon tinymce % git add . mr.mbogon tinymce % git commit -m init [master c6cfc2a] init1 file changed, 2 insertions(), 1 deletion(-) mr.mengbogon tinymce % git push 枚举对象中: 241, 完成…

Windows 下安装 NVM

NVM 下载 NVM 在工作中&#xff0c;你可能遇到过某个项目需要高版本的 node 才能运行&#xff0c;而有的项目可能只支持低版本的 node&#xff0c;此时就可以借助于一些 Node 版本管理工具&#xff0c;比如 nvm&#xff08;Node Version Manager&#xff09;&#xff0c;帮助…

AI知识补全(十七):通用人工智能AGI是什么?

名人说:博观而约取,厚积而薄发。——苏轼《稼说送张琥》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 上一篇:AI知识补全(十六):A2A - 谷歌开源的agent通信协议是什么? 目录 一、什么是AGI?概念解析1. 什么是AGI2. AGI与现有AI的本质区别二 、AGI的核…