OpenCV中ellipse与circle函数参数详解及代码示例

Elena
Elena
发布时间:2026-10-13 | 5人浏览过
原创

本文详细解析OpenCV中ellipse和circle函数的核心参数,包括中心点、轴长、半径、颜色及线型等。通过C++代码示例展示如何绘制不同角度的椭圆和实心圆,帮助开发者快速掌握图像几何图形的绘制方法。

OpenCV椭圆绘制函数ellipse详解

ellipse函数用于在图像上绘制椭圆,其函数原型为:void 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);

该函数将椭圆绘制到指定的图像img中。椭圆的中心位置由Point类型的center参数确定,其大小由Size类型的axes参数定义,表示椭圆外接矩形的大小。angle参数指定椭圆的旋转角度。绘制范围由startAngle和endAngle控制,通常设置为0到360度以绘制完整椭圆。

颜色参数color采用Scalar类型,格式为(x, y, z),例如蓝色可表示为Scalar(255, 0, 0)。线宽由thickness参数控制,默认值为1。线型lineType默认为8,表示使用8联通线型进行绘制。

OpenCV圆形绘制函数circle详解

circle函数用于在图像上绘制圆形,其函数原型为:void circle(InputOutputArray img, Point center, int radius, const Scalar& color, int thickness = 1, int lineType = LINE_8, int shift = 0);

img参数指定输入的图像对象,所有绘制操作均作用于该图像。

center参数定义圆心的坐标位置,类型为Point。

radius参数指定圆的半径大小,类型为int。

color参数为Scalar类型,用于指定圆的颜色。例如,蓝色可表示为Scalar(255, 0, 0)。

thickness参数控制线条的宽度,默认值为1。若设置为负值,则表示绘制实心圆。

lineType参数指定线条的类型,默认为8联通线型(LINE_8)。

C++代码实现示例


#include<iostream>
#include<opencv2/opencv.hpp>
using namespace cv;
using namespace std;
#define WINDOW_NAME1 "绘制图1"
#define WINDOW_NAME2 "绘制图2"
#define WINDOW_WIDTH 600  //定义窗口大小
string image = "C:\\Users\\asus\\Pictures\\Saved Pictures\\123.jpg";
void DrawEllipse(Mat img, double angle);
void DrawFi1ledCirc1e(Mat img, Point center);
int main()
{ 
  Mat atomImage = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3);
  Mat rookImage = Mat::zeros(WINDOW_WIDTH, WINDOW_WIDTH, CV_8UC3);
  //绘制椭圆
  DrawEllipse(atomImage, 90);
  DrawEllipse(atomImage, 0);
  DrawEllipse(atomImage, 45);
  DrawEllipse(atomImage, -45);
  //绘制圆心
  DrawFi1ledCirc1e(atomImage, Point(WINDOW_WIDTH / 2,WINDOW_WIDTH / 2));
  imshow(WINDOW_NAME1, atomImage);
  waitKey(0);
  return 0;
}
void DrawEllipse(Mat img, double angle) {
  int thickness = 2;
  int lineType = 8;
  ellipse(img, Point(WINDOW_WIDTH / 2, WINDOW_WIDTH / 2),
    Size(WINDOW_WIDTH / 4, WINDOW_WIDTH / 16), angle, 0, 360, Scalar(255, 129, 0),
    thickness, lineType);
}
void DrawFi1ledCirc1e(Mat img, Point center) {
  int thickness = -1;
  int lineType = 8;
  circle(img, center, WINDOW_WIDTH / 32, Scalar(0, 0, 255), thickness, lineType);
}

总结

以上介绍了OpenCV中绘制圆形circle函数和椭圆ellipse函数的基本用法及参数说明。希望本文能帮助您更好地使用OpenCV进行图像处理。如有任何疑问,欢迎留言讨论。感谢您的支持!

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表