OpenCV基本图形绘制之填充连接区域内部
先上代码
#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基本图形绘制之填充连接区域内部相关推荐
- 技巧 | OpenCV中如何绘制与填充多边形
点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本文转自:opencv学堂 很多人都问过我这个问题,OpenCV中 ...
- 使用OpenCV进行多边形绘制和填充
OpenCV中在图像上进行多边形绘制和填充的函数分别为polylines和fillPoly,在图像分割任务中午中,可用于将预测结果绘制到目标图像. 简单的实现: import cv2 import n ...
- OpenCV基本图形绘制之绘制直线
先上代码 #include <iostream> #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> ...
- OpenCV基本图形绘制之椭圆
先上代码 #include <iostream> #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> ...
- OpenCV基本图形绘制之圆
先上代码 #include <iostream> #include <opencv2/core.hpp> #include <opencv2/highgui.hpp> ...
- 【CV 向】OpenCV 图形绘制指南
文章目录 引言 1. 创建画布 2. 绘制线段 3. 绘制矩形 4. 绘制圆 5. 绘制椭圆 6. 绘制多边形 7. 绘制字体 结论 引言 Python OpenCV 是一个功能强大的计算机视觉库,除 ...
- MATLAB绘制平面填充图入门详解
一.引言 在画图的时候,为了让图形更加清晰突出,往往需要对某一条或几条曲线围成的区域进行填冲颜色,以得到填充图.对于平面图形的填充,可以matlab的命令fill和area等实现. 二.fill命令的 ...
- 【opencv系列04】OpenCV4.X图形绘制
点击上方"AI搞事情"关注我们 一. 基本图形绘制 1. 基本函数与参数 cv2.line(): 线 cv2.circle(): 圆 cv2.rectangle(): 矩形 cv2 ...
- 番外3. Python OpenCV 中如何绘制各种图形?
本系列专栏写作方式 本系列专栏写作将采用首创的问答式写作形式,快速让你学习到 OpenCV 的初级.中级.高级知识. 3. Python OpenCV 中如何绘制各种图形? 本篇博客主要分享一下在 P ...
最新文章
- 深度优先(DFS)和广度优先(BFS)
- 一个功能齐全的DataGrid分页例子
- 为11.2.0.2 Grid Infrastructure添加节点
- 【Java 集合】Java 集合的线程安全性 ( 加锁同步 | java.utils 集合 | 集合属性 | java.util.concurrent 集合 | CopyOnWrite 机制 )
- servlet获取jsp页面的值为null_Jsp挖掘(4)-打造自己的jsp防御代码
- spring源码分析之spring-web web模块分析
- 结对项目-WordCount
- Zookeeper超详细的面试题
- Bootstrap表格样式
- 1.4 批量生成Oracle建表语句
- 查看C#Dll的一个 工具 ILSpy
- Unity移动视角(MainCamera的操作)
- RK3399与MIPI DSI之间在DRM架构下的联结关系
- 计算机老掉线 路由器网络,路由器经常掉线怎么办 路由器WIFI信号不稳定解决方法...
- 项目上线质量如何评估
- maven私服deploy-405错误
- Windows网络共享或共享打印机无法访问连接的简单终极解决方法
- 2021年前端关注的8个技术趋势
- 网络号和主机号具体计算原理-ipv4篇
- 词法解析器 | 从零实现一门语言