opencv图像处理学习(十二)——绘图指令

版权声明:不得随意转载 https://blog.csdn.net/qq_35789421/article/details/88919656

1.绘制直线函数line

void line( cv::Mat& img, ,cv::Point pt1,cv::Point pt2 ,const cv::Scalar& color, int thickness=1,int lineType = 8, int shift = 0 );

其中参数img表示待绘制的图像;pt1表示直线的第一个端点;pt2表示直线的第二个端点;color表示线条的颜色(RGB),thickness表示线条厚度,lineType表示线型(4邻域或8邻域,默认8邻域),shift表示偏移量。

2.绘制矩形函数rectangle

void rectangle( cv::Mat& img, ,cv::Point pt1,cv::Point pt2 ,const cv::Scalar& color, int thickness=1,int lineType = 8, int shift = 0 );

其中参数img表示待绘制的图像;pt1表示矩形的一个端点;pt2表示矩形的对角端点;color表示线条的颜色(RGB),thickness表示线条厚度,lineType表示线型(4邻域或8邻域,默认8邻域),shift表示偏移量。

PS:cv::Point pt1和cv::Point pt2也可以用一个参数cv::Rect代替,其表示待绘制的矩形。

3.判断一条直线是否在某个矩形内函数clipLine函数

其作用是如果直线line任何一部分在矩形 'imgRect'内,则返回true

bool clipLine(cv::Rect imgRect,cv::Point& pt1, cv::Point& pt2 );

其中参数imgRect表示要穿过的矩形,pt1表示直线的第一个端点,pt2// 直线的第二个端点。

PS:imgRect可以用imgSize代替,该参数表示图像的大小,相当于矩形的端点在(0,0)

4.绘制圆函数circle

void circle( cv::Mat& img,cv::Point center, int radius,const cv::Scalar& color, int thickness = 1, int lineType = 8, int shift = 0 );

其中参数img表示待绘制的图像;center表示圆心位置;radius表示圆的半径;color表示线条的颜色(RGB),thickness表示线条厚度,lineType表示线型(4邻域或8邻域,默认8邻域),shift表示偏移量。

5.绘制椭圆和椭圆弧线(部分椭圆)函数ellipse

bool ellipse( cv::Mat& img, cv::Point center,cv::Size axes,double angle, double startAngle, double endAngle, const cv::Scalar& color, int thickness = 1, int lineType = 8,int shift = 0);

其中参数img表示待绘制的图像;center表示椭圆中心;axes表示椭圆长轴和短轴的长度;angle表示长轴倾角;  startAngle表示弧度绘制的起始角度;endAngle表示弧度绘制的截止角度;color表示线条的颜色(RGB),thickness表示线条厚度,lineType表示线型(4邻域或8邻域,默认8邻域),shift表示偏移量。

PS:center椭圆中心、axes椭圆长轴和短轴的长度、angle长轴倾角、startAngle弧度绘制的起始角度、endAngle弧度绘制的截止角度也可以用一个参数cv::RotatedRect& rect代替,其表示椭圆的外切矩形。

6.绘制非封闭多边形(即折线)函数polyLines

void polyLines( cv::Mat& img,const cv::Point** pts, int* npts, int ncontours,bool isClosed, const cv::Scalar& color,int lineType = 8, int shift = 0 );

其中参数img表示待绘制的图像,pts表示c风格的点序列的序列,npts表示 'pts[i]'中点的数目,ncontours表示'pts'中的序列数,isClosed表示首尾是否相连,如果是true, 则连接首尾两点,color表示线条的颜色(RGB),thickness表示线条厚度,lineType表示线型(4邻域或8邻域,默认8邻域),shift表示偏移量。

7.绘制填充多边形fillPoly函数

void fillPoly(cv::Mat& img,const cv::Point** pts,  int* npts, int ncontours, const cv::Scalar& color,  int lineType = 8, int shift = 0, cv::Point offset = Point() );

其中参数img表示待绘制的图像;Point* pts表示c风格的点序列;npts表示'pts'中点的数目;ncontours表示'pts'中的序列数;color表示线条的颜色(RGB),lineType表示线型(4邻域或8邻域,默认8邻域);shift表示偏移量;offset表示整体偏移量

8.绘制封闭多边形fillConvexPoly函数

void fillConvexPoly(cv::Mat& img, const cv::Point* pts,int npts, const cv::Scalar& color,int lineType = 8, int shift = 0 );

其中参数img表示待绘制的图像;Point* pts表示c风格的点序列;npts表示'pts'中点的数目;color表示线条的颜色(RGB),lineType表示线型(4邻域或8邻域,默认8邻域);shift表示偏移量

PS:注意:输入的多边形不能出现交叉,否则会出错

猜你喜欢

转载自blog.csdn.net/qq_35789421/article/details/88919656