
// 使用math库里的宏常量
#define _USE_MATH_DEFINES
#include <iostream>
#include <filesystem>
#include <string>
#include <windows.h>
#include <opencv2/opencv.hpp>
namespace fs = std::filesystem;
using namespace cv;
using namespace std;
// 绘制直线
void test_draw_line()
{
Mat src(300, 400, CV_8UC3);
Point p1 = Point(20, 30); // 两种定义点的方式
Point p2;
p2.x = 300;
p2.y = 300;
Scalar color = Scalar(0, 0, 255); // 定义红色
line(src, p1, p2, color, 1, LINE_8); // 在背景图绘画直线
imshow("src_line", src);
}
// 绘制矩形
void test_draw_rectangle()
{
Mat src(300, 400, CV_8UC3);
Rect rect = Rect(200, 100, 150, 150); // 定义一个矩形(左上角x,左上角y,宽,高)
Scalar color = Scalar(255, 0, 0); // 蓝色
rectangle(src, rect, color, 2, LINE_8); // 在背景图绘画矩形
imshow("src_rectangle", src);
}
// 绘制椭圆
void test_draw_ellipse()
{
Mat src(300, 400, CV_8UC3);
Point c_point = cv::Point(src.cols / 2, src.rows / 2); // 椭圆中心点
Scalar color = cv::Scalar(0, 0, 255); // 红色
// 背景图、中心点、长短轴axes、起始角度、 弧段开始角度、弧段结束角度、颜色、线宽、线型
ellipse(src, c_point, Size(src.cols / 4, src.rows / 8), 90, 0, 360, color, 2, LINE_8);
imshow("src_ellipse", src);
}
// 绘制圆
void test_draw_circle()
{
Mat src(300, 400, CV_8UC3);
Scalar color = Scalar(0, 255, 255);
Point c_point = Point(src.cols / 2, src.rows / 2);
// 背景图,中心点,半径,颜色,线宽,线型
circle(src, c_point, 150, color, 2, LINE_8);
imshow("src_circle", src);
}
int main()
{
// 绘制直线
test_draw_line();
// 绘制矩形
test_draw_rectangle();
// 绘制椭圆
test_draw_ellipse();
// 绘制圆
test_draw_circle();
waitKey(0);
destroyAllWindows();
return 0;
}