cv::circle
时间: 2024-09-20 17:03:08 浏览: 48
在OpenCV库中,`cv::circle`是一个用于绘制圆形的基本函数。它接受一个图像矩阵(通常是`Mat`对象),以及三个参数:
1. **img**:输入的图像,可以是8位单通道(灰度图像)、8位三通道(BGR彩色图像)或者其他深度的图像。
2. **center**:圆心的坐标,通常是一个包含两个元素的`(x, y)`元组。
3. **radius**:圆的半径。
4. **color**:指定圆形轮廓的颜色,可以是基本颜色(如BGR值)或者是通过`Scalar`对象表示的颜色。
5. **thickness**:线条的粗细,如果为负值,则填充圆形区域。
6. **lineType**:线型,如`LINE_AA`可以提供更好的抗锯齿效果。
这个函数会在给定的图像上绘制出一个圆形,并返回绘制后的图像。例如:
```cpp
cv::Mat img = ...; // 初始化图像
cv::Point center(100, 100); // 圆心位置
int radius = 50; // 半径
cv::Scalar color(0, 255, 0); // 绿色
cv::circle(img, center, radius, color, 2);
```
相关问题
cv::circle如何使用
cv::circle函数是OpenCV库中用于绘制圆的函数。它的原型是void cv::circle(InputOutputArray img, Point center, int radius, const Scalar & color, int thickness = 1, int lineType = LINE_8, int shift = 0)。
你可以使用cv::circle函数来绘制实心圆和空心圆。以下是一个示例代码:
#include <iostream>
#include <opencv2/opencv.hpp>
int main() {
// 创建一个黑色的高300,宽600的背景图
cv::Mat image(300, 600, CV_8UC3, cv::Scalar(0, 0, 0));
if (!image.data) {
std::cerr << "[错误] 图像无数据!" << std::endl;
std::exit(EXIT_FAILURE);
}
// 圆心
cv::Point centerCircle1(100, 100);
// 半径
int radiusCircle = 30;
// 颜色
cv::Scalar colorCircle1(0, 0, 255); // (B, G, R)
// 粗细
int thicknessCircle1 = 2;
// 绘制第一个圆
cv::circle(image, centerCircle1, radiusCircle, colorCircle1, thicknessCircle1);
cv::Point centerCircle2(300, 200);
cv::Scalar colorCircle2(0, 255, 0); // (B, G, R)
int radiusCircle2 = 60;
// 绘制第二个实心圆
cv::circle(image, centerCircle2, radiusCircle2, colorCircle2, cv::FILLED);
cv::namedWindow("image", cv::WINDOW_AUTOSIZE);
cv::imshow("image", image);
cv::waitKey(0);
return 0;
}
此代码创建了一个黑色背景的图像,并在图像上绘制了两个圆,一个是空心圆,另一个是实心圆。你可以根据自己的需求修改圆心位置、半径、颜色和粗细。
cv::circle(mat, cv::Point(x, y), radius, color, -1);
`cv::circle()`是OpenCV库中的一个函数,它允许你在图像矩阵(`mat`)上绘制一个圆形。函数原型如下:
```cpp
void circle(InputArray src, Point center, int radius, Scalar color, int thickness = -1, LineType line_type = LINE_8, bool shift = false);
```
参数解释:
- `src`:输入图像,可以是Mat、IplImage等OpenCV支持的矩阵格式。
- `center`:一个`Point`对象,表示圆心的坐标 `(x, y)`。
- `radius`:圆的半径。
- `color`:一个`Scalar`对象,代表线条的颜色和透明度(BGR值或RGBA值)。默认是黑色。
- `thickness`:线的粗细程度,默认为 `-1`,这会使得绘制的是闭合的圆形轮廓;其他正值表示线宽,负值表示填充区域的厚度。
- `line_type`:线的类型,如`LINE_AA`表示抗锯齿线型。
- `shift`:是否将圆形中心平移至原点,此选项通常对计算有帮助。
当你调用`cv::circle()`并传入上述参数时,它会在给定的`src`图像上,按照指定的圆心和半径,以及颜色和线宽,绘制一个圆形。如果`thickness`是负数,那么将会填充一个圆形区域;如果是正数,则会绘制出线框。
阅读全文