C++Opencv图像几何绘制

这篇具有很好参考价值的文章主要介绍了C++Opencv图像几何绘制。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1.绘制矩形的函数rectangle()

opencv中提供了绘制矩形的函数rectangle()

void cv::rectangle(InputOutputArray img, Point pt1, Point pt2, const Scalar & color, int  thickness = 1,
                   int  lineType = LINE_8, int  shift = 0)
 
void cv::rectangle(InputOutputArray img, Rect rec, const Scalar & color, int  thickness = 1,
                   int  lineType = LINE_8, int  shift = 0)            

参数解释:
pt1:矩形的一个顶点
pt2:矩形中与pt1相对的顶点,即两个点在对角线上。
rec:矩形左上角定点和长宽。
Scalar:颜色bgr
thickness:线宽
lineType: 线型
shift: 坐标点的小数点位数

2.绘制线条的函数line()

该函数利用两点确定一条直线的方式在图像中画出一条直线

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

参数解释:
pt1:直线起始点在图像中的坐标。
pt2:直线终点在图像中的坐标。
color:圆形的颜色,用三通道表示。

3.绘制圆形的函数rectangle()

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

参数解释:
img:需要绘制圆形的图像
center:圆形的圆心位置坐标。
radius:圆形的半径长度,单位为像素。
color:圆形的颜色。
thickness:轮廓的宽度,如果数值为负,则绘制一个实心圆。
lineType:边界的类型,可取值为FILLED ,LINE_4 ,LINE_8 和LINE_AA
shift:中心坐标和半径数值中的小数位数。

4.绘制椭圆的函数ellipse()

void cv::ellipse(InputOutputArray img, Point center, Size axes, double  angle, double  startAngle, double  endAngle,
                 const Scalar & color, int  thickness = 1, int  lineType = LINE_8, int  shift = 0)

参数解释:
center:椭圆的中心坐标。
axes:椭圆主轴大小的一半。
angle:椭圆旋转的角度,单位为度。
startAngle:椭圆弧起始的角度,单位为度。
endAngle:椭圆弧终止的角度,单位为度

在OpenCV 4中还提供了另外一个函数ellipse2Poly()用于输出椭圆的边界的像素坐标,但是不会在图像中绘制椭圆,其函数原型在代码清单3-43中给出。

void cv::ellipse2Poly(Point center, Size axes, int angle, int arcStart, int arcEnd, int delta,
std::vector< Point > & pts)
参数解释:
该函数与绘制椭圆需要输入的参数一致,只是不将椭圆输出到图像中,而是通过vector向量将椭圆边缘的坐标点存储起来,便于后续的再处理
delta:后续折线顶点之间的角度,它定义了近似精度。
pts:椭圆边缘像素坐标向量集合。

示例代码:

	Rect rect;
	rect.x = 100;
	rect.y = 100;
	rect.width = 250;
	rect.height = 300;

	Mat bg = Mat::zeros(image.size(), image.type());
	rectangle(bg, rect, Scalar(0, 0, 255), -1, 8, 0);
	circle(bg, Point(350,400),15,Scalar(0,255,0),-1,LINE_AA, 0);
	line(bg, Point(100, 100), Point(350, 400), Scalar(0, 255, 0), 4, LINE_AA, 0);

	RotatedRect rrt;
	rrt.center = Point(200,200);
	rrt.size = Size(100,200);
	rrt.angle = 90.0;
	ellipse(bg, rrt, Scalar(0, 255, 255), 2, 8);
	
	Mat dst;
	addWeighted(image, 0.7, bg, 0.3, 0, dst);
	imshow("绘制演示", bg);

c++ opencv画矩形,Opencv(C++),opencv,c++,计算机视觉

5.绘制多边形的函数

5.1 fillPoly()填充绘制

void cv::fillPoly(     
         InputOutputArray  img,
         InputArrayOfArrays       pts,
         const Scalar &        color,
         int   lineType = LINE_8,
         int   shift = 0,
         Point       offset = Point()

参数解释:
img 表示绘制画布,图像
pts 多边形顶点数组,可以存放多个多边形的顶点坐标的数组。
color 表示颜色
lineType 表示线渲染类型
shift 表示相对位移
offset:所有顶点的可选偏移

5.2 polylines()填充绘制

void cv::polylines(
         InputOutputArray  img,
         InputArrayOfArrays       pts,
         bool        isClosed,
         const Scalar &        color,
         int   thickness = 1,
         int   lineType = LINE_8,
         int   shift = 0
)

参数解释:
img 表示绘制画布,图像
pts 表示多边形的点
isClosed 表示是否闭合,默认闭合
color 表示颜色
thickness 表示线宽,必须是正数
lineType 表示线渲染类型
shift 表示相对位移

5.3 drawContours()函数

 1void cv::drawContours (        
 2    InputOutputArray  image,
 3    InputArrayOfArrays  contours,
 4    int   contourIdx,
 5    const Scalar &        color,
 6    int   thickness = 1,
 7    int   lineType = LINE_8,
 8    InputArray      hierarchy = noArray(),
 9    int   maxLevel = INT_MAX,
10    Point       offset = Point()
11)

drawContours()可以完成多个多边形的填充与绘制,它本质上把每个多边形的顶点集作为轮廓看待,可以很方便的完成轮廓的绘制与填充,跟点、线、圆、椭圆与矩形的绘制与填充一样,都是通过设置thickness这个参数来实现绘制与填充。只是在输入的时候需要适当改一下。参数controus表示的多个多边形点集合,contourIdx大于零表示绘制指定索引的轮廓,-1表示绘制全部,thickness正数表示绘制,非正数表示填充

示例代码:

	Mat canvas = Mat::zeros(Size(512, 512), CV_8UC3);
	Point p1(100,100);
	Point p2(350, 100);
	Point p3(450, 280);
	Point p4(320, 450);
	Point p5(80, 400);
	std::vector<Point> pts;
	pts.push_back(p1);
	pts.push_back(p2);
	pts.push_back(p3);
	pts.push_back(p4);
	pts.push_back(p5);

	//方法一
	//fillPoly(canvas, pts, Scalar(255, 0, 255), 8, 0);     //多边形填充
	//polylines(canvas, pts, true, Scalar(0,0,255),2,8,0);  //多边形绘制

	// 方法二
	std::vector<std::vector<Point>> contours;  //多边形集合
	contours.push_back(pts);
	drawContours(canvas, contours, -1, Scalar(255,0,0), -1);
	imshow("多边形绘制", canvas);

c++ opencv画矩形,Opencv(C++),opencv,c++,计算机视觉文章来源地址https://www.toymoban.com/news/detail-591921.html

到了这里,关于C++Opencv图像几何绘制的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Opencv(C++)笔记--绘制直线、矩形、椭圆、圆、填充多边形、绘制字体和随机产生坐标点

    目录 1--cv::line()绘制直线 2--cv::Rect()绘制矩形 3--cv::ellipse()绘制椭圆 4--cv::circle()绘制圆 5--cv::fillPoly()填充多边形 6--cv::putText()绘制字体 6--cv::RNG随机产生坐标点 使用 cv::Point p1 定义坐标点; 使用 cv::line() 绘制直线,传入的参数依次为:背景图、两个点的坐标、直线的颜色、直线

    2024年02月14日
    浏览(38)
  • C++ opencv鼠标事件,在图像上画矩形

    opencv中常用的除了TrackBar滑动条事件,还有丰富的鼠标事件,与TrackBar类似,鼠标事件也是使用回调函数判断动作的发生,并执行相关的操作。整个行为与QT的信号与槽类似。 在图像中画出矩形,需要使用setMouseCallback()和MouseCallback()函数。 本文使用的头文件及命名空间: 设

    2024年02月11日
    浏览(25)
  • OpenCv (C++) 使用矩形 Rect 覆盖图像中某个区域

    推荐参考博客:OpenCV实现将任意形状ROI区域置黑(多边形区域置黑) 比较常用的是使用 Rect 矩形实现该功能,代码如下: 效果如下: 推荐参考博客:OpenCV 中 cv::Rect 矩形类用法 cv::Rect 用于创建矩形,API 参数如下: 源码如下:

    2024年02月16日
    浏览(28)
  • 【OpenCV • c++】基础图像的绘制

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【OpenCV • c++】计算机视觉 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪

    2024年02月11日
    浏览(32)
  • C++Opencv图像几何绘制

    opencv中提供了绘制矩形的函数rectangle() 参数解释: pt1:矩形的一个顶点 pt2:矩形中与pt1相对的顶点,即两个点在对角线上。 rec:矩形左上角定点和长宽。 Scalar:颜色bgr thickness:线宽 lineType: 线型 shift: 坐标点的小数点位数 该函数利用两点确定一条直线的方式在图像中画出

    2024年02月16日
    浏览(23)
  • OpenCV:绘制图像中mask的最小外接矩形

    在计算机视觉和图像处理中,我们经常需要计算直线与外接矩形边的交点。这在进行边缘检测、图像分割、目标跟踪等任务时非常有用。本文将介绍如何使用OpenCV和NumPy计算直线与外接矩形边的交点,并展示如何在实际图像中绘制直线。 使用OpenCV的findContours函数寻找图像中的

    2024年01月24日
    浏览(34)
  • opencv进阶02-在图像上绘制多种几何图形

    OpenCV 提供了方便的绘图功能,使用其中的绘图函数可以绘制直线、矩形、圆、椭圆等多种几何图形,还能在图像中的指定位置添加文字说明。 OpenCV 提供了绘制直线的函数 cv2.line()、绘制矩形的函数 cv2.rectangle()、绘制圆的函数cv2.circle()、绘制椭圆的函数cv2.ellipse()、绘制多边形

    2024年02月12日
    浏览(36)
  • OpenCV(十三):图像中绘制直线、圆形、椭圆形、矩形、多边形和文字

    目录 1.绘制直线line() 2.绘制圆形circle() 3.绘制椭圆形ellipse()  4.绘制矩形rectangle() 5.绘制多边形 fillPoly()  6.绘制文字putText() 7.例子 1.绘制直线line() img:绘制圆形的图像 ptl:直线起始点在图像中的坐标 pt2: 直线终点在图像中的坐标 color:圆形的颜色,用三通道表示 thickness:轮廓的宽

    2024年02月09日
    浏览(41)
  • 【OpenCv • c++】几何检测 —— 霍夫变换 | 霍夫直线检测 | 霍夫线变化

    🚀 个人简介:CSDN「 博客新星 」TOP 10 , C/C++ 领域新星创作者 💟 作    者: 锡兰_CC ❣️ 📝 专    栏: 【OpenCV • c++】计算机视觉 🌈 若有帮助,还请 关注➕点赞➕收藏 ,不行的话我再努努力💪💪💪

    2024年02月06日
    浏览(29)
  • 【opencv3】鼠标框选矩形并显示当前像素点坐标和矩形中心点坐标C++

    (1)用鼠标在图中框选矩形目标,然后保存框选的图片; (2)鼠标拖动过程中要求显示框的线条以及鼠标当前像素点信息(坐标和RGB值); (3)拖动完成后单独显示框取的图像,拖动完成后cout输出框中心像素点坐标。 鼠标事件: 鼠标左键按下时(event == CV_EVENT_LBUTTONUP),标

    2024年02月09日
    浏览(26)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包