#include<opencv2/opencv.hpp>#include<opencv2/core.hpp>#include<filesystem>bool opencvTool::drawPolygon(std::string image_p, std::vector<cv::Point> points){cv::Mat ima = cv::imread(image_p.c_str());// 读取图像,替换为你的图片路径 cv::Scalar red = cv::Scalar(0,0,255);// Red color cv::Scalar blue = cv::Scalar(255,0,0);// Red color int thickness =2;// 使用polylines函数给图片绘制多边形cv::polylines(ima, points,true, red, thickness,8,0);// 填充颜色cv::fillPoly(ima, std::vector<std::vector<cv::Point>>{points}, blue,8,0);cv::imwrite(image_p.c_str(), ima);returntrue;}bool opencvTool::drawPolygon(cv::Mat& image, std::vector<cv::Point> points,int lineWidth){if(image.empty()){std::cout <<"Error: empty mat"<< std::endl;returnfalse;}// 确保多边形点的数量大于等于3if(points.size()<3){std::cout <<"Error: need at least 3 points to draw a polygon"<< std::endl;returnfalse;}// 绘制多边形cv::polylines(image, points,true, cv::Scalar(0,0,255), lineWidth);returntrue;}
// 在图像上绘制多边形并设置线条宽度staticbooldrawPolygon(cv::Mat& image, std::vector<cv::Point> points,int lineWidth =1){if(image.empty()){std::cout <<"Error: empty mat"<< std::endl;returnfalse;}// 确保多边形点的数量大于等于3if(points.size()<3){std::cout <<"Error: need at least 3 points to draw a polygon"<< std::endl;returnfalse;}// 将多边形点转换为 OpenCV 的 Point 数组cv::Point *pts =new cv::Point[points.size()];for(size_t i =0; i < points.size();++i){pts[i]= points[i];}// 绘制多边形const cv::Point* ppt[1]={ pts };int npt[]={static_cast<int>(points.size())};cv::polylines(image, ppt, npt,1,true, cv::Scalar(255,255,255), lineWidth);delete[] pts;returntrue;}
cv::Point *pts = new cv::Point[points.size()];: 这行代码创建了一个动态分配的 cv::Point 数组,数组的大小等于传入的顶点数量 points.size()。这个数组将用于存储多边形的顶点坐标。
for (size_t i = 0; i < points.size(); ++i): 这是一个 for 循环,用于遍历传入的顶点向量 points 中的每个顶点。
1. Spring IOC入门
1.1 什么是Spring IoC IoC(Inversion of Control),即控制反转,是一种设计原则。简单来说,IoC就是将程序的某种传统控制流程反转了。 在Spring框架中,控制反转体现在对象的创建和管理上。…