1500字范文,内容丰富有趣,写作好帮手!
1500字范文 > 【OpenCV3】几何图形(直线 矩形 圆 椭圆 多边形等)绘制

【OpenCV3】几何图形(直线 矩形 圆 椭圆 多边形等)绘制

时间:2023-08-12 11:18:03

相关推荐

【OpenCV3】几何图形(直线 矩形 圆 椭圆 多边形等)绘制

在图像处理的过程中,我们有时需要在图像或者视频上画上一些图案或者绘上一些文字。OpenCV中提供了各种功能的绘图函数,使用这些函数,我们可以在图像上绘制直线、矩形、圆、椭圆、多边形等等。

1、cv::circle()

cv::circle()是OpenCV在图像上绘制圆的函数,调用形式如下:

void circle(cv::Mat& img, // 待绘制的图像cv::Point center, // 圆心位置int radius, // 圆的半径const cv::Scalar& color, // 线条的颜色(RGB)int thickness = 1, // 线宽int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0 // 偏移量);

2、cv::clipLine()

cv::clipLine()是判断一条直线是否在某个矩形内,有以下两种形式:

bool clipLine( // 如果直线line任何一部分在矩形 'imgRect'内,则返回truecv::Rect imgRect, // 要穿过的矩形cv::Point& pt1, // 直线的第一个端点cv::Point& pt2 // 直线的第二个端点);bool clipLine( // 如果直线line任何一部分在图像大小Size内,则返回truecv::Size imgSize, // 图像的大小,相当于矩形的端点在(0,0)cv::Point& pt1, // 直线的第一个端点cv::Point& pt2 // 直线的第二个端点);

3、cv::ellipse()

cv::ellipse()是绘制椭圆和椭圆弧线(部分椭圆)的函数,有以下两种形式:

bool ellipse(cv::Mat& img, // 待绘制的图像cv::Point center, // 椭圆中心cv::Size axes, // 椭圆长轴和短轴的长度double angle, // 长轴倾角double startAngle, // 弧度绘制的起始角度double endAngle, // 弧度绘制的const cv::Scalar& color, // 线条的颜色(RGB)int thickness = 1, // 线宽int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0 // 偏移量);bool ellipse(cv::Mat& img, // 待绘制的图像const cv::RotatedRect& rect, // 椭圆的外切矩形const cv::Scalar& color, // 线条的颜色(RGB)int thickness = 1, // 线宽int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0 // 偏移量);

4、cv::fillConvexPoly()

cv::fillConvexPoly()用于绘制封闭多边形,注意:输入的多边形不能出现交叉,否则会出错。具体形式如下:

void fillConvexPoly(cv::Mat& img, // 待绘制的图像const cv::Point* pts, // c风格的点序列int npts, // 'pts'中点的数目const cv::Scalar& color, // 线条的颜色(RGB)int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0 // 偏移量);

5、cv::fillPoly()

cv::fillPoly()用于绘制任意数目的封闭多边形。多边形可以出现交叉。具体形式如下:

void fillPoly(cv::Mat& img, // 待绘制的图像const cv::Point** pts, // c风格的点序列的序列int* npts, // 'pts[i]'中点的数目int ncontours, // 'pts'中的序列数const cv::Scalar& color, // 线条的颜色(RGB)int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0, // 偏移量cv::Point offset = Point() // 整体偏移量);

6、cv::line()

cv::line()用于直线的绘制,具体形式如下:

void line(cv::Mat& img, // 待绘制的图像cv::Point pt1, // 直线的第一个端点cv::Point pt2 // 直线的第二个端点const cv::Scalar& color, // 线条的颜色(RGB)int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0 // 偏移量);

7、cv::rectangle()

cv::rectangle()用于矩形的绘制,有以下两种形式:

void rectangle(cv::Mat& img, // 待绘制的图像cv::Point pt1, // 矩形的第一个顶点cv::Point pt2 // 矩形的对角顶点const cv::Scalar& color, // 线条的颜色(RGB)int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0 // 偏移量);void rectangle(cv::Mat& img, // 待绘制的图像cv::Rect r, // 待绘制的矩形const cv::Scalar& color, // 线条的颜色(RGB)int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0 // 偏移量);

8、cv::polyLines()

cv::polyLines()用于绘制非封闭多边形(即折线),具体形式如下:

void polyLines(cv::Mat& img, // 待绘制的图像const cv::Point** pts, // c风格的点序列的序列int* npts, // 'pts[i]'中点的数目int ncontours, // 'pts'中的序列数bool isClosed, // 如果是true, 则连接首尾两点const cv::Scalar& color, // 线条的颜色(RGB)int lineType = 8, // 线型(4邻域或8邻域,默认8邻域)int shift = 0 // 偏移量);

.03.30

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。