opencv 绘图 c++
时间: 2023-07-19 08:40:33 浏览: 109
OpenCV提供了一些绘图函数,可以在图像上绘制线条、矩形、圆形、椭圆形等。
以下是一个简单的例子,展示如何用OpenCV绘制一个红色圆形:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 创建一个空图像
Mat img(500, 500, CV_8UC3, Scalar(0, 0, 0));
// 在图像中心绘制一个红色圆形
circle(img, Point(250, 250), 100, Scalar(0, 0, 255), -1);
// 显示图像
imshow("Image", img);
waitKey(0);
return 0;
}
```
在这个例子中,我们首先创建了一个空图像,大小为500x500像素,颜色模式为RGB(CV_8UC3)。接着,我们使用`circle`函数在图像中心绘制了一个半径为100的红色圆形。最后,我们使用`imshow`函数显示图像,并等待用户按下任意键继续。
除了`circle`函数,OpenCV还提供了许多其他的绘图函数,包括`line`、`rectangle`、`ellipse`等等。这些函数的参数和用法可以在OpenCV的官方文档中找到。
相关问题
opencv 清除绘图c++
在 C++ 中清除 OpenCV 中的绘图,可以使用 `cv::Mat` 类型的图像,然后将其重置为全 0 矩阵,即可清除绘图。具体实现步骤如下:
1. 在绘图完成后,创建一个 `cv::Mat` 类型的图像。
2. 在图像上绘制需要绘制的图形。
3. 如果需要清除绘图,则将图像重置为全 0 矩阵。
4. 最后,通过 `imshow()` 函数显示图像。
以下是代码示例:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 创建一个黑色的图像
Mat img = Mat::zeros(512, 512, CV_8UC3);
// 在图像上绘制一个矩形
rectangle(img, Point(384, 0), Point(510, 128), Scalar(0, 255, 0), 3);
// 显示图像
imshow("image", img);
// 等待用户输入
int key = waitKey(0);
// 如果用户按下 "c" 键,则清除绘图
if (key == 'c')
{
img = Mat::zeros(512, 512, CV_8UC3);
imshow("image", img);
}
// 关闭窗口
destroyAllWindows();
return 0;
}
```
注意,在 C++ 中,需要使用 `waitKey()` 函数来等待用户输入,并且需要检查返回值来确定用户按下了哪个键。同时,需要使用 `destroyAllWindows()` 函数来关闭所有的窗口。
opencv c++ 绘图
Opencv C++ 提供了一些绘图函数,可以在图像上绘制不同的几何形状和文本。以下是一些常用的绘图函数:
1. cv::line:绘制一条直线
```
cv::line(image, cv::Point(x1, y1), cv::Point(x2, y2), cv::Scalar(B, G, R), thickness);
```
参数解释:
- image:要绘制的图像
- cv::Point(x1, y1) 和 cv::Point(x2, y2):线段的两个端点坐标
- cv::Scalar(B, G, R):线段的颜色,BGR顺序
- thickness:线段的宽度
2. cv::rectangle:绘制一个矩形
```
cv::rectangle(image, cv::Point(x1, y1), cv::Point(x2, y2), cv::Scalar(B, G, R), thickness);
```
参数解释:
- image:要绘制的图像
- cv::Point(x1, y1) 和 cv::Point(x2, y2):矩形的左上角和右下角坐标
- cv::Scalar(B, G, R):矩形的颜色,BGR顺序
- thickness:矩形边框的宽度,如果为负数则表示填充整个矩形
3. cv::circle:绘制一个圆
```
cv::circle(image, cv::Point(x, y), radius, cv::Scalar(B, G, R), thickness);
```
参数解释:
- image:要绘制的图像
- cv::Point(x, y):圆心坐标
- radius:圆的半径
- cv::Scalar(B, G, R):圆的颜色,BGR顺序
- thickness:圆边框的宽度,如果为负数则表示填充整个圆
4. cv::putText:在图像上绘制文本
```
cv::putText(image, text, cv::Point(x, y), font, fontScale, cv::Scalar(B, G, R), thickness);
```
参数解释:
- image:要绘制的图像
- text:要绘制的文本
- cv::Point(x, y):文本左下角坐标
- font:字体类型,如cv::FONT_HERSHEY_SIMPLEX
- fontScale:字体大小,通常为1.0
- cv::Scalar(B, G, R):文本颜色,BGR顺序
- thickness:文本线条宽度,通常为1
以上是一些常用的绘图函数,你可以根据需要选择使用。
阅读全文