1. 程式人生 > >OpenCV繪製多邊形和區域填充

OpenCV繪製多邊形和區域填充

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;
}