C++ opencv多边形填充与绘制

1.API

1.polylines

 绘制多条多边形曲线
        共7个参数
            第1个参数 输入
            第2个参数 输入多边形点集(绘制边的顺序,与点集数组中点的顺序有关)
            第3个参数 isclosed(bool类型)
            第4个参数 多边形颜色
            第5个参数 线宽
            第6个参数 lineType
            第7个参数 shift(之前已经讲过,这里不再赘述)

示例代码 

//函数定义
void polyline_drawing_demo();

//函数实现
void QuickDemo::polyline_drawing_demo() {

	Mat canvas = Mat::zeros(Size(256, 256), CV_8UC3);

	Point p1(40,40),p2(80,80),p3(80,60),p4(120,80),p5(120,60),p6(160,40);

	std::vector<Point> pts;

	pts.push_back(p1);
	pts.push_back(p2);
	pts.push_back(p3);
	pts.push_back(p4);
	pts.push_back(p5);
	pts.push_back(p6);

	polylines(canvas, pts, true, Scalar(200, 0, 0), 5, 8, 0);


	imshow("000",canvas);

}

在这里插入图片描述

2.fillPoly   填充绘制的多边形

  共6个参数
            第1个参数 输入
            第2个参数 点集数组
            第3个参数 填充颜色
            第4个参数 lineType
            第5个参数 shift(不再赘述)
            第6个参数 轮廓所有点的可选偏移

实例代码 点的顺序很重要,按顺序的

void QuickDemo::polyline_drawing_demo() {

	Mat canvas = Mat::zeros(Size(256, 256), CV_8UC3);

	Point p1(40,40),p2(80,80),p3(80,60),p4(120,80),p5(120,60),p6(160,40);

	std::vector<Point> pts;

	pts.push_back(p1);
	pts.push_back(p2);
	pts.push_back(p3);
	pts.push_back(p4);
	pts.push_back(p5);
	pts.push_back(p6);

	polylines(canvas, pts, true, Scalar(200, 0, 0), 5, 8, 0);

	fillPoly(canvas, pts, Scalar(200, 0, 0), 8, 0);

	imshow("000",canvas);
}

在这里插入图片描述

3.drawContours    绘制轮廓轮廓/填充轮廓

 共9个参数,这里我们只介绍前5个(剩下的有缺省值)
            第1个参数 输入
            第2个参数 多边形轮廓的数组
            第3个参数 选择的多边形轮廓(在数组中的编号,-1为全选)
            第4个参数 多边形颜色
            第5个参数 填充/绘制(-1为填充)

 示例代码 大容器放小的

void QuickDemo::polyline_drawing_demo() {

	Mat canvas = Mat::zeros(Size(256, 256), CV_8UC3);

	Point p1(40,40),p2(80,80),p3(80,60),p4(120,80),p5(120,60),p6(160,40);

	std::vector<Point> pts;

	pts.push_back(p1);
	pts.push_back(p2);
	pts.push_back(p3);
	pts.push_back(p4);
	pts.push_back(p5);
	pts.push_back(p6);

	std::vector<std::vector<Point>> contours;

	contours.push_back(pts);

	drawContours(canvas, contours, -1, Scalar(200, 0, 0), -1);

	imshow("000",canvas);
}

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

打酱油的;

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值