OpenCV绘制多边形和区域填充
绘制多边形和区域填充主要用到了2个函数:polylines()和fillPoly()函数。
代码如下:
#include<opencv2/opencv.hpp>
#include<vector>
#include <iostream>
#include "opencvLibs.h"
int main()
{
cv::Mat src(768, 1024,CV_8UC3);
src.setTo(0);
std::vector<cv::Point > contour;
contour.reserve(6);
contour.push_back(cv::Point(389,253));
contour.push_back(cv::Point(0, 529));
contour.push_back(cv::Point(0, 768));
contour.push_back(cv::Point(1024, 768));
contour.push_back(cv::Point(1024, 643));
contour.push_back(cv::Point(671, 263));
std::vector<std::vector<cv::Point >> contours;
contours.push_back(contour);
//填充区域之前,首先采用polylines()函数,可以使填充的区域边缘更光滑
cv::polylines(src, contours, true, cv::Scalar(255, 255, 255), 2, cv::LINE_AA);//第2个参数可以采用contour或者contours,均可
cv::fillPoly(src, contours, cv::Scalar(255, 255, 255));//fillPoly函数的第二个参数是二维数组!!
cv::imshow("原图", src);
cv::waitKey(0);
return 0;
}