OpenCV基础图形绘制

写在前面

使用 C++语言
一些圆、椭圆、直线等基础图形绘制, 为图像添加文字。

操作环境

操作系统: Ubuntu 18.04

OpenCV: 4.1.0

开始

OpenCV 坐标系

原点  _______\  x轴
    |
    |
    |
   \|
  y轴

注意:

所有的图像均是在名为 canvas 的 Mat 类型上实现

已提前声明命名空间using namespace cv;

cv::Mat canvas(400, 400, CV_8U);

直线

void line(){
  cv::line(canvas,
           cv::Point(0, 45),  // 起始点
           cv::Point(400, 400),  // 终点
           255,  // 颜色
           2);  // 宽度
  cv::imshow("line", canvas);
  cv::waitKey(0);
}

line

圆形

void circle() {
  cv::circle(canvas,
             cv::Point(200, 200),  // 圆心
             100,  // 半径
             255,  // 颜色
             2);  // 宽度
  cv::imshow("circle", canvas);
  cv::waitKey(0);
}

circle

椭圆

void ellipse(){
 cv::ellipse(canvas
             cv::Point(200, 200),  // 圆心
             cv::Size(100, 50)),  // (x轴长度,y轴长度)
             10,  // 旋转角度
             0,  // 绘制起点
             270,  // 绘制终点
             255,  // 颜色
             2);  // 宽度
  cv::imshow("ellipse", canvas);
  cv::waitKey(0);
}

ellipse

矩形

void rectangle(){
  cv::rectangle(canvas,
                cv::Point(100, 100),  // 左上角坐标
                cv::Point(300, 300),  // 右下角坐标
                255,  // 颜色
                2);  // 宽度
  cv::rectangle(canvas,
                Rect(50, 50, 100, 100),  // (左上角点x,左上角点y, 矩形宽度, 矩形长度)
                255,  // 颜色
                2);  // 宽度
  cv::imshow("rectangle", canvas);
  cv::waitKey(0);
}

rectangle

文字

void text(){
  cv::putText(canvas,
              "hello world",  // 绘制文字
              cv::Point(20, 100),  // 起始点
              cv::FONT_ITALIC,  // 字体
              2,  // 字体缩放
              255,  // 颜色
              2);  // 宽度
  cv::imshow("text", canvas);
  cv::waitKey(0);
}

text

注意: 无法输出中文, 会出现???

写在后面

基础绘制,多用于标记。


comment: