c++ OpenCV 绘制直线line、矩形rectangle、椭圆ellipse、圆circle

c++ OpenCV 绘制直线line、矩形rectangle、椭圆ellipse、圆circle

// 使用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;
}

 

发表回复

您的电子邮箱地址不会被公开。