OpenCV 多邊形繪制與填充

一、知識點
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的核…