OpenCv —— cv::fillPoly(同时填充2个区域,附源码)

发布于:2023-04-28 ⋅ 阅读:(432) ⋅ 点赞:(0)
效果

     说明:了解到cv::fillPoly可同时对个区域进行填充。刚好笔者在使用摄像头做拉流工作,于是想能不能通过该cv函数实现对画面除了中心区域外都做填充呢。

     下图左侧两条线分别代表了两个区域的顶点及设定的曲线范围,从而生成右侧的填充图。以达到只保留中心矩形范围的图像。

在这里插入图片描述

代码
// iVWidth, iVHeight 图像宽高
cv::Size nFillSize(200, 200);	// 中心区域尺寸	
cv::Rect nFillRect(cv::Point((iVWidth - nFillSize.width) / 2, (iVHeight - nFillSize.width) / 2), nFillSize);
cv::Point pts[2][8] =
{
	{
		cv::Point(0, 0),
		cv::Point(0, iVHeight),
		cv::Point(nFillRect.x + nFillRect.width, iVHeight),
		cv::Point(nFillRect.x + nFillRect.width, nFillRect.y + nFillRect.height),
		cv::Point(nFillRect.x, nFillRect.y + nFillRect.height),
		cv::Point(nFillRect.x, nFillRect.y),
		cv::Point(nFillRect.x + nFillRect.width, nFillRect.y),
		cv::Point(nFillRect.x + nFillRect.width, 0)
	},
	{
		cv::Point(nFillRect.x + nFillRect.width, 0),
		cv::Point(iVWidth, 0),
		cv::Point(iVWidth, iVHeight),
		cv::Point(nFillRect.x + nFillRect.width, iVHeight),
	}
};
const cv::Point* ppt1[2] = { pts[0],pts[1] };
int ptsCnt[2] = { 8,4 };

/*
参数1:	输入Mat
参数2:	顶点数组
参数3:	顶点数目数组
参数4:	线条数目
参数5:	填充色
*/
cv::fillPoly(Mat, ppt1, ptsCnt, 2, cv::Scalar(0, 0, 0, 0));

关注

笔者 - jxd

微信公众号搜索 “码农总动员” 或 微信扫描下方二维码,了解更多你不知道的XX,O(∩_∩)O

在这里插入图片描述

本文含有隐藏内容,请 开通VIP 后查看

网站公告

今日签到

点亮在社区的每一天
去签到