先上代码

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/video.hpp>using namespace cv;
using namespace std;#define WINDOW_WIDTH 600//自定义窗口大小的宏 void DrawPolygon(Mat img) {int lineType = 8;//创建一些点Point rookPoints[1][20];rookPoints[0][0] = Point(WINDOW_WIDTH / 4, 7 * WINDOW_WIDTH / 8);rookPoints[0][1] = Point(3*WINDOW_WIDTH / 4, 7 * WINDOW_WIDTH / 8);rookPoints[0][2] = Point(3*WINDOW_WIDTH / 4, 13 * WINDOW_WIDTH / 16);rookPoints[0][3] = Point(11*WINDOW_WIDTH / 16, 13 * WINDOW_WIDTH / 16);rookPoints[0][4] = Point(19*WINDOW_WIDTH / 32, 3 * WINDOW_WIDTH / 8);rookPoints[0][5] = Point(3*WINDOW_WIDTH / 4, 3 * WINDOW_WIDTH / 8);rookPoints[0][6] = Point(3*WINDOW_WIDTH / 4, WINDOW_WIDTH / 8);rookPoints[0][7] = Point(26*WINDOW_WIDTH / 40, WINDOW_WIDTH / 8);rookPoints[0][8] = Point(26*WINDOW_WIDTH / 40,  WINDOW_WIDTH / 4);rookPoints[0][9] = Point(22*WINDOW_WIDTH / 40, WINDOW_WIDTH / 4);rookPoints[0][10] = Point(22*WINDOW_WIDTH / 40, WINDOW_WIDTH / 8);rookPoints[0][11] = Point(18*WINDOW_WIDTH / 40, WINDOW_WIDTH / 8);rookPoints[0][12] = Point(18*WINDOW_WIDTH / 40,  WINDOW_WIDTH / 4);rookPoints[0][13] = Point(14*WINDOW_WIDTH / 40, WINDOW_WIDTH / 4);rookPoints[0][14] = Point(14*WINDOW_WIDTH / 40,  WINDOW_WIDTH / 8);rookPoints[0][15] = Point(WINDOW_WIDTH / 4, WINDOW_WIDTH / 8);rookPoints[0][16] = Point(WINDOW_WIDTH / 4,  3*WINDOW_WIDTH / 8);rookPoints[0][17] = Point(13*WINDOW_WIDTH / 32,  3*WINDOW_WIDTH / 8);rookPoints[0][18] = Point(5*WINDOW_WIDTH / 16, 13 * WINDOW_WIDTH / 16);rookPoints[0][19] = Point(WINDOW_WIDTH / 4, 13 * WINDOW_WIDTH / 16);const Point* ppt[1] = {rookPoints[0] };int npt[] = { 20 };fillPoly(img,ppt,npt,1,Scalar(255, 255, 255),lineType);
}int main(int argc, char** argv)
{Mat img = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3);DrawPolygon(img);imshow("name1", img);waitKey(0);return 0;
}

效果

函数解析

点位按照向右为正,向下为正。

按照数组中点位的顺序连接,最后一个点位会自动连接到起点,然后封闭区域自动填充。

试验demo

#include <iostream>
#include <opencv2/core.hpp>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc.hpp>
#include <opencv2/videoio.hpp>
#include <opencv2/video.hpp>using namespace cv;
using namespace std;#define WINDOW_WIDTH 600//自定义窗口大小的宏 void DrawPolygon(Mat img) {int lineType = 8;//创建一些点Point rookPoints[1][3];rookPoints[0][0] = Point(50,50);rookPoints[0][1] = Point(50, 300);rookPoints[0][2] = Point(300, 300);const Point* ppt[1] = { rookPoints[0] };int npt[] = { 3 };fillPoly(img,ppt,npt,1,Scalar(255, 255, 255),lineType);
}int main(int argc, char** argv)
{Mat img = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3);DrawPolygon(img);imshow("name1", img);waitKey(0);return 0;
}

效果

经过测试,无论是三角形或者是矩形或者其他图形,尾坐标都会自动连接起始坐标,然后封闭区域自动填充

OpenCV基本图形绘制之填充连接区域内部相关推荐

  1. 技巧 | OpenCV中如何绘制与填充多边形

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 很多人都问过我这个问题,OpenCV中 ...

  2. 使用OpenCV进行多边形绘制和填充

    OpenCV中在图像上进行多边形绘制和填充的函数分别为polylines和fillPoly,在图像分割任务中午中,可用于将预测结果绘制到目标图像. 简单的实现: import cv2 import n ...

  3. OpenCV基本图形绘制之绘制直线

    先上代码 #include <iostream> #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> ...

  4. OpenCV基本图形绘制之椭圆

    先上代码 #include <iostream> #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> ...

  5. OpenCV基本图形绘制之圆

    先上代码 #include <iostream> #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> ...

  6. 【CV 向】OpenCV 图形绘制指南

    文章目录 引言 1. 创建画布 2. 绘制线段 3. 绘制矩形 4. 绘制圆 5. 绘制椭圆 6. 绘制多边形 7. 绘制字体 结论 引言 Python OpenCV 是一个功能强大的计算机视觉库,除 ...

  7. MATLAB绘制平面填充图入门详解

    一.引言 在画图的时候,为了让图形更加清晰突出,往往需要对某一条或几条曲线围成的区域进行填冲颜色,以得到填充图.对于平面图形的填充,可以matlab的命令fill和area等实现. 二.fill命令的 ...

  8. 【opencv系列04】OpenCV4.X图形绘制

    点击上方"AI搞事情"关注我们 一. 基本图形绘制 1. 基本函数与参数 cv2.line(): 线 cv2.circle(): 圆 cv2.rectangle(): 矩形 cv2 ...

  9. 番外3. Python OpenCV 中如何绘制各种图形?

    本系列专栏写作方式 本系列专栏写作将采用首创的问答式写作形式,快速让你学习到 OpenCV 的初级.中级.高级知识. 3. Python OpenCV 中如何绘制各种图形? 本篇博客主要分享一下在 P ...

最新文章

  1. 深度优先(DFS)和广度优先(BFS)
  2. 一个功能齐全的DataGrid分页例子
  3. 为11.2.0.2 Grid Infrastructure添加节点
  4. 【Java 集合】Java 集合的线程安全性 ( 加锁同步 | java.utils 集合 | 集合属性 | java.util.concurrent 集合 | CopyOnWrite 机制 )
  5. servlet获取jsp页面的值为null_Jsp挖掘(4)-打造自己的jsp防御代码
  6. spring源码分析之spring-web web模块分析
  7. 结对项目-WordCount
  8. Zookeeper超详细的面试题
  9. Bootstrap表格样式
  10. 1.4 批量生成Oracle建表语句
  11. 查看C#Dll的一个 工具 ILSpy
  12. Unity移动视角(MainCamera的操作)
  13. RK3399与MIPI DSI之间在DRM架构下的联结关系
  14. 计算机老掉线 路由器网络,路由器经常掉线怎么办 路由器WIFI信号不稳定解决方法...
  15. 项目上线质量如何评估
  16. maven私服deploy-405错误
  17. Windows网络共享或共享打印机无法访问连接的简单终极解决方法
  18. 2021年前端关注的8个技术趋势
  19. 网络号和主机号具体计算原理-ipv4篇
  20. 词法解析器 | 从零实现一门语言

热门文章

  1. 让“书香”溢满美丽乡村
  2. Tomcat介绍及三种启动方式的区别
  3. 判断复选框是否被选中
  4. 阿里云Linux服务器漏洞修复 ( 继续汇总中 )
  5. Java动态拼接SQL--02--Jpa
  6. 苹果iOS 5系统新功能全揭秘
  7. Codeforces #494 A. Polycarp's Pockets
  8. 大小端转换 int16 和int32
  9. 本地GitLab服务器搭建
  10. r2adj——调整r方Adjusted R-Squared