如何opencv缓慢画线、圆
时间: 2023-04-05 09:04:07 浏览: 54
可以使用cv2.line()和cv2.circle()函数来绘制线和圆。如果想要缓慢绘制,可以使用cv2.waitKey()函数来控制绘制速度。例如,可以在每次绘制后加上一段时间的延迟,以达到缓慢绘制的效果。具体实现可以参考以下代码:
```
import cv2
import time
img = cv2.imread('image.jpg')
height, width, _ = img.shape
# 创建一个黑色的图像
canvas = np.zeros((height, width, 3), dtype=np.uint8)
# 绘制线
for i in range(0, width, 5):
cv2.line(canvas, (0, 0), (i, height), (0, 255, 0), 2)
cv2.imshow('canvas', canvas)
cv2.waitKey(50) # 延迟50毫秒
# 绘制圆
for i in range(0, height, 5):
cv2.circle(canvas, (width//2, height//2), i, (0, 0, 255), 2)
cv2.imshow('canvas', canvas)
cv2.waitKey(50) # 延迟50毫秒
cv2.destroyAllWindows()
```
这段代码会先绘制一条从左上角到右下角的绿色直线,然后从图像中心开始绘制红色圆圈,每次绘制后延迟50毫秒。可以根据需要调整延迟时间和绘制的形状。
相关问题
opencv 画椭圆
OpenCV是一个流行的计算机视觉库,支持各种图像和视频处理操作。要在OpenCV中画椭圆,你可以使用cv::ellipse函数。以下是一个简单的示例代码:
```
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 创建一个黑色图像
Mat image = Mat::zeros(400, 400, CV_8UC3);
// 定义椭圆的参数
Point center(200, 200);
Size axes(100, 50);
double angle = 45;
Scalar color(0, 0, 255);
// 在图像上画椭圆
ellipse(image, center, axes, angle, 0, 360, color, 2);
// 显示图像
imshow("Ellipse", image);
waitKey(0);
return 0;
}
```
这个程序将创建一个400x400大小的黑色图像,并在其中画一个中心坐标为(200,200)、长轴为100、短轴为50、旋转角度为45度的红色椭圆。你可以通过修改参数来画出不同的椭圆形状和颜色。
OpenCV 画线
可以使用 OpenCV 中的 `line()` 函数来画线,函数原型如下:
```c++
void line(
InputOutputArray img,
Point pt1,
Point pt2,
const Scalar& color,
int thickness = 1,
int lineType = LINE_8,
int shift = 0
);
```
其中,`img` 表示要绘制线条的图像,`pt1` 和 `pt2` 表示线段的两个端点坐标,`color` 表示线条的颜色,`thickness` 表示线条的宽度,`lineType` 表示线条的类型,`shift` 表示坐标点小数位的位数。
下面是一个画线的示例代码:
```c++
#include <opencv2/opencv.hpp>
using namespace cv;
int main()
{
// 创建一个宽为 400,高为 300 的黑色图像
Mat img(300, 400, CV_8UC3, Scalar(0, 0, 0));
// 画一条红色的直线
Point pt1(100, 100), pt2(300, 200);
line(img, pt1, pt2, Scalar(0, 0, 255), 2);
// 显示图像
imshow("line", img);
waitKey(0);
return 0;
}
```
运行后会显示一个黑色的窗口,在窗口中有一条从 (100, 100) 到 (300, 200) 的红色线段。