完整演示:

#include <iostream>
#include <opencv2/opencv.hpp>


int main()
{   


    // 创建一个黑色图像,参数分别是图像大小、图像类型,CV_8UC3表示8位无符号整数,3通道
    cv::Mat image = cv::Mat::zeros(cv::Size(600, 600), CV_8UC3);

    // 绘制直线,参数分别是图像、起点、终点、颜色(蓝绿红)、线宽、线型
    cv::line(image, cv::Point(50, 50), cv::Point(350, 250), cv::Scalar(255, 0, 0), 2, cv::LINE_AA);
    // 绘制矩形,参数分别是图像、左上角、右下角、颜色、线宽、线型
    cv::rectangle(image, cv::Point(50, 50), cv::Point(350, 250), cv::Scalar(0, 255, 0), 2, cv::LINE_AA);
    // 绘制圆形,参数分别是图像、圆心、半径、颜色、线宽、线型
    cv::circle(image, cv::Point(200, 150), 100, cv::Scalar(255, 0, 0), 2, cv::LINE_AA);
    // 实心
    cv::circle(image, cv::Point(200, 150), 80, cv::Scalar(255, 0, 0), -1, cv::LINE_AA);

    // ================== 使用vector绘制多边形 ==================
    std::vector<cv::Point> points_v;
    // // 随机生成5个点
    // for (int i = 0; i < 5; i++)
    // {
    // points_v.push_back(cv::Point(rand() % 600, rand() % 600));

    // }
    points_v.push_back(cv::Point(50, 50));
    points_v.push_back(cv::Point(100, 50));
    points_v.push_back(cv::Point(100, 100));
    points_v.push_back(cv::Point(50, 100));

    // 绘制多边形,参数分别是图像、顶点数组、是否闭合、颜色、线宽、线型
    cv::polylines(image, points_v, true, cv::Scalar(255, 0, 0), 2, 8, 0);


    // ================== 绘制文字 ==================
    // 参数分别是图像、文字、文字位置、字体、字体大小、颜色、线宽、线型
    cv::putText(image, "Hello World!", cv::Point(400, 50), cv::FONT_HERSHEY_SIMPLEX, 1.0, cv::Scalar(255, 255, 255), 2, 8, 0);

    // 保存图像
    cv::imwrite("./gray_image.jpg", image);
    
    // // imshow显示图像
    // cv::imshow("opencv", image);  

    // // 等待按键
    // cv::waitKey(0);  

    return 0;
}

Logo

技术共进,成长同行——讯飞AI开发者社区

更多推荐