十六、多邊形填充和繪制

項目功能實現:對多邊形進行輪廓繪制和填充
按照之前的博文結構來,這里就不在贅述了

一、頭文件

mult-drawing.h

#pragma once#include<opencv2/opencv.hpp>using namespace cv;class Mult_Drawing {
public:void mult_drawing();
};#pragma once

二、函數實現

mult-drawing.cpp

Mat canvas = Mat::zeros(Size(512, 512), CV_8UC3);
定義一個畫布,大小為512*512的全0黑色圖片

Point p1(100, 100), p2(350, 100), p3(450, 280), p4(320, 450), p5(80, 400);
得到五個點的位置

pts.push_back(p1); pts.push_back(p2); pts.push_back(p3); pts.push_back(p4); pts.push_back(p5);
對這五個點進行繪制到pts上

方法一:
fillPoly(canvas, pts, Scalar(255, 0, 0), LINE_8, 0);
有了五個點的坐標位置,然后進行填充
polylines(canvas, pts, true, Scalar(0, 255, 0), 2, LINE_AA, 0);
類似,根據五個點的坐標位置進行輪廓繪制
具體的參數定義,可參考博文:十四、圖像幾何形狀繪制
參數一:要處理的圖片對象
參數二:各個多邊形點的坐標
參數三:線條顏色
參數四:鋸齒優化方法
參數五:微調偏置優化

方法二:
drawContours(canvas, contours, -1, Scalar(255, 0, 0), -1);
直接繪制,但需要輪廓的特征contours
也就是把pts這些已知的五個點的位置給扔到contours中即可
contours.push_back(pts);像這樣
參數一:處理的圖片對象
參數二:輪廓數據信息
參數三:-1表示填充,其他正整數表示線條粗細
參數四:線條顏色
參數五:-1表示所有輪廓都繪制填充,其他正整數表示對哪個輪廓進行操作

#include"mult-drawing.h"
#include<iostream>
#include<opencv2/opencv.hpp>void Mult_Drawing::mult_drawing() {Mat canvas = Mat::zeros(Size(512, 512), CV_8UC3);Point p1(100, 100), p2(350, 100), p3(450, 280), p4(320, 450), p5(80, 400);std::vector<Point>pts;pts.push_back(p1); pts.push_back(p2); pts.push_back(p3); pts.push_back(p4); pts.push_back(p5);//方法一:得到五個點之后,先填充再繪制fillPoly(canvas, pts, Scalar(255, 0, 0), LINE_8, 0);polylines(canvas, pts, true, Scalar(0, 255, 0), 2, LINE_AA, 0);imshow("mult-drawing", canvas);//方法二:直接填充繪制std::vector<std::vector<Point>>contours;contours.push_back(pts);drawContours(canvas, contours, -1, Scalar(255, 0, 0), -1);imshow("other method", canvas);
}

三、主函數

yy_main.cpp

#include <opencv2/opencv.hpp>
#include <iostream>
#include "mult-drawing.h"using namespace cv;
using namespace std;int main(int argc, char** argv) {Mult_Drawing yy;yy.mult_drawing();waitKey(0);destroyAllWindows();return 0;
}

項目結構如下:
在這里插入圖片描述
效果圖如下:
在這里插入圖片描述

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/696288.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/696288.shtml
英文地址,請注明出處:http://en.pswp.cn/news/696288.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

vue如何動態加載顯示本地圖片資源

在實際開發中&#xff0c;根據某一個變量動態展示圖片的情況有很多。實現方法分打包構建工具的差異而不同。 1、webpack的項目 require引入圖片資源 2、vite的項目 new URL(url,base).href 疑問解答&#xff1a;為什么vite項目不可以用require&#xff1f; 原因在于&#xf…

Elastic Stack--01--簡介、安裝

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 1. Elastic Stack 簡介為什么要學習ESDB-Engines搜索引擎類數據庫排名常年霸榜![在這里插入圖片描述](https://img-blog.csdnimg.cn/direct/051342a83f574c8c910cda…

微信小程序獨立分包與分包預下載

官網鏈接 獨立分包配置方法 獨立分包使用限制 獨立分包中不能依賴主包和其他分包中的內容&#xff0c;包括 js 文件、模板、wxss、自定義組件等&#xff1b;App 只能在主包內定義&#xff0c;獨立分包中不能定義 App&#xff0c;會造成無法預期的行為獨立分包中暫時不支持使用…

cocos creator3.x項目打包成aar 加入到已有的Android工程

Cocos crearor版本&#xff1a; 3.4.2 Android Studio Flamingo | 2022.2.1 Patch 2 1、配置構建安卓項目 2、 運行編譯無報錯 出現問題可嘗試修改Gradle版本 修改jdk版本 3、對libservice打包成aar 打包完后 再build/outputs找到aar 如果看不到Tasks模塊&#xff0c;在Fil…

sqlserver觸發器

在SQL Server中&#xff0c;觸發器是一種特殊的數據庫對象&#xff0c;它們會在表上執行特定的操作時自動觸發。觸發器可以用于在表上插入、更新或刪除數據時執行自定義的邏輯。觸發器通常用于實施數據完整性約束、審計和日志記錄等操作。 觸發器有三種主要類型&#xff1a; 插…

人機交互新研究:MIT開發了結合腦電和眼電的新式眼鏡,與機器狗交互

還記得之前的AI讀心術嗎&#xff1f;最近&#xff0c;「心想事成」的能力再次進化&#xff0c; ——人類可以通過自己的想法直接控制機器人了&#xff01; 來自麻省理工的研究人員發表了Ddog項目&#xff0c;通過自己開發的腦機接口&#xff08;BCI&#xff09;設備&#xff…

面試答疑03

1、登錄鑒權怎么做的&#xff1f;為什么采用jwt的方式&#xff1f;有什么好處&#xff1f; Java登錄鑒權常見的實現方式包括**CookieSession、HTTP Basic Authentication、ServletJDBC**等。 在Java的Web應用中&#xff0c;登錄鑒權是確認用戶身份的關鍵環節。一個常用的傳統…

【Linux內核模塊加新功能 DAY6-8】

一、向內核添加新功能 1.1 靜態加載法&#xff1a; 即新功能源碼與內核其它代碼一起編譯進uImage文件內 新功能源碼與Linux內核源碼在同一目錄結構下在linux-3.14/driver/char/目錄下編寫myhello.c&#xff0c;文件內容如下&#xff1a;#include <linux/module.h> #inc…

Vue項目啟動過程全記錄(node.js運行環境搭建)

一、安裝node.js并配置環境變量 1、安裝node.js 從Node.js官網下載安裝包并安裝。然后在安裝后的目錄&#xff08;如果是下載的壓縮文件&#xff0c;則是解壓縮的目錄&#xff09;下新建node_global和node_cache這兩個文件夾。 node_global&#xff1a;npm全局安裝位置 node_…

Golang 中 NATS JetStream 的高級特性有哪些?

NATS JetStream 是 NATS 消息系統的一個高級功能模塊&#xff0c;提供了許多高級特性&#xff0c;使得它在處理消息時更加靈活、可靠和高效。以下是 NATS JetStream 的一些高級特性&#xff1a; 持久化消息存儲&#xff1a;NATS JetStream 使用持久化存儲引擎&#xff0c;可以確…

代碼隨想錄三刷day06

提示&#xff1a;文章寫完后&#xff0c;目錄可以自動生成&#xff0c;如何生成可參考右邊的幫助文檔 文章目錄 前言一、力扣203. 移除鏈表元素二、力扣707. 設計鏈表三、力扣 前言 遞歸法相對抽象一些&#xff0c;但是其實和雙指針法是一樣的邏輯&#xff0c;同樣是當cur為空的…

機器學習面試:邏輯回歸與樸素貝葉斯區別

邏輯回歸與樸素貝葉斯區別有以下幾個方面: (1)邏輯回歸是判別模型&#xff0c;樸素貝葉斯是生成模型&#xff0c;所以生成和判別的所有區別它們都有。 (2)樸素貝葉斯屬于貝葉斯&#xff0c;邏輯回歸是最大似然&#xff0c;兩種概率哲學間的區別。 (3)樸素貝葉斯需要條件獨立假設…

【刷題】牛客 JZ64 求1+2+3+...+n

刷題 題目描述思路一 &#xff08;暴力遞歸版&#xff09;思路二 &#xff08;妙用內存版&#xff09;思路三 &#xff08;快速乘法版&#xff09;思路四 &#xff08;構造巧解版&#xff09;Thanks?(&#xff65;ω&#xff65;)&#xff89;謝謝閱讀&#xff01;&#xff01…

力扣49.字母異位詞分組

題目描述&#xff1a; 49. 字母異位詞分組 難度 中等 給你一個字符串數組&#xff0c;請你將 字母異位詞 組合在一起。可以按任意順序返回結果列表。 字母異位詞 是由重新排列源單詞的所有字母得到的一個新單詞。 示例 1: 輸入: strs ["eat", "tea"…

在Linux中查找大文件

在Linux中查找大文件&#xff0c;你可以使用find命令結合其他工具&#xff08;如sort和du&#xff09;來實現。以下是一些常見的方法&#xff1a; 1. 使用find命令查找大文件 你可以使用find命令來查找特定大小以上的文件。例如&#xff0c;要查找當前目錄及其子目錄中大小超…

高盛:日本這輪通脹是否可持續,關鍵看房租

租金在日本CPI中的權重高達20%&#xff0c;高盛預計短期內租金將繼續拖累通脹至1.7%或以下&#xff0c;長期有望溫和上行&#xff0c;使通脹穩在2%的水平。 日本正在轉向“去通縮”&#xff0c;房租能否支撐通脹態勢&#xff1f; 在日股今年一路高歌、有望“收復失地”時&…

redis的AOF機制

Redis AOF(Append Only File)機制是為了記錄每一次redis命令的操作并用于恢復數據。 AOF按順序記錄每一步操作&#xff0c;例如&#xff1a; set k 3, set k 5, set k 10 &#xff0c;當服務器重啟后依次執行命令恢復k 10。 日志寫入有三種方式&#xff1a; Always&#x…

【【深入淺出的了解從算法到RTL的基本流程】】

深入淺出的了解從算法到RTL的基本流程 首先 明確需求 &#xff0c;明確題目 接下來是第一輪建模-------目的是 驗證算法的正確性 這個階段分為以下兩個方面 一方面是 &#xff1a; 通過一些算法仿真工具來對 這個設計進行建模 — 算法原理建模 第二方面是 &#xff1a; 是 算…

hbase最新版本配置屬性

1. 說明 hbase的配置屬性大全 hbase版本基于 hbase-3.0.0-alpha-4 <?xml version"1.0"?> <?xml-stylesheet type"text/xsl" href"configuration.xsl"?> <!-- /*** Licensed to the Apache Software Foundation (ASF) under…

unity-firebase-Analytics分析庫對接后數據不顯示原因,及最終解決方法

自己記錄一下unity對接了 FirebaseAnalytics.unitypackage&#xff08;基于 firebase_unity_sdk_10.3.0 版本&#xff09; 庫后&#xff0c;數據不顯示的原因及最終顯示解決方法&#xff1a; 1. 代碼問題&#xff08;有可能是代碼寫的問題&#xff0c;正確的代碼如下&#xff…