【opencv】示例-drawing.cpp画线、箭头、矩形、多边形、椭圆、圆形以及在图像上渲染文本并通过循环实现动态绘制效果...

04-13 1239阅读

【opencv】示例-drawing.cpp画线、箭头、矩形、多边形、椭圆、圆形以及在图像上渲染文本并通过循环实现动态绘制效果...

#include "opencv2/core.hpp" // 引入opencv2核心头文件
#include "opencv2/imgproc.hpp" // 引入opencv2图像处理头文件
#include "opencv2/highgui.hpp" // 引入opencv2高级GUI(head-up display)头文件
#include  // 引入标准输入输出头文件
using namespace cv; // 使用cv命名空间
// 帮助函数,用于打印程序说明
static void help(char** argv)
{
    printf("\nThis program demonstrates OpenCV drawing and text output functions.\n"
    "Usage:\n"
    "   %s\n", argv[0]);
}
// 函数生成随机颜色,用于绘图
static Scalar randomColor(RNG& rng)
{
    int icolor = (unsigned)rng; // 生成随机数作为颜色值
    return Scalar(icolor&255, (icolor>>8)&255, (icolor>>16)&255); // 返回一个Scalar, 表示BGR颜色
}
// 主函数
int main(int /* argc */, char** argv) // main函数,笔误argv用于命令行参数
{
    help(argv); // 调用help函数显示帮助
    char wndname[] = "Drawing Demo"; // 窗口名
    const int NUMBER = 100; // 定义数量常量
    const int DELAY = 5; // 定义延时常量
    int lineType = LINE_AA; // 定义线类型为抗锯齿线条,可以改为LINE_8查看非抗锯齿效果
    int i, width = 1000, height = 700; // 定义循环变量i以及窗口宽高
    int x1 = -width/2, x2 = width*3/2, y1 = -height/2, y2 = height*3/2; // 定义坐标范围
    RNG rng(0xFFFFFFFF); // 创建随机数生成器
    Mat image = Mat::zeros(height, width, CV_8UC3); // 创建一个黑色图像
    imshow(wndname, image); // 显示图像
    waitKey(DELAY); // 等待键盘输入
    // 绘制随机线条和箭头
    for (i = 0; i = 0) // 如果按下任意键,则退出
            return 0;
    }
    // 绘制随机矩形和标记
    for (i = 0; i  5)
            rectangle(image, pt1, pt2, randomColor(rng), MAX(thickness, -1), lineType);  // 如果marker大于5,则画一个矩形
        else
            drawMarker(image, pt1, randomColor(rng), marker, marker_size );  // 如果marker小于或等于5,则绘制一个标记
    
        imshow(wndname, image);  // 显示图像
        if(waitKey(DELAY) >= 0)  // 如果在DELAY时间内收到按键,结束程序
            return 0;
    }
    
    // 绘制椭圆
    for (i = 0; i = 0)  // 如果在DELAY时间内收到按键,结束程序
            return 0;
    }
    
    // 绘制多边形线条
    for (i = 0; i= 0)  // 如果在DELAY时间内收到按键,结束程序
            return 0;
    }
    
    // 填充多边形
    for (i = 0; i= 0)  // 如果在DELAY时间内收到按键,结束程序
            return 0;
    }
    
    // 绘制圆形
    for (i = 0; i = 0)  // 如果在DELAY时间内收到按键,结束程序
            return 0;
    }
    
    // 在图像上绘制文字
    for (i = 1; i = 0)  // 如果在DELAY时间内收到按键,结束程序
            return 0;
    }
    // 绘制渐变文字“OpenCV forever!”
    Size textsize = getTextSize("OpenCV forever!", FONT_HERSHEY_COMPLEX, 3, 5, 0); // 获取文字尺寸
    Point org((width - textsize.width)/2, (height - textsize.height)/2); // 计算文字位置
    Mat image2; // 创建另一个图像
    for( i = 0; i = 0) // 如果按下任意键,则退出
            return 0;
    }
    waitKey(); // 等待键盘输入
    return 0; // 正常退出
}

此段代码是一段利用OpenCV库绘制各种图形和文字的C++示例程序。程序包括了画线、箭头、矩形、多边形、椭圆、圆形以及在图像上渲染文本,并通过循环实现动态绘制效果。使用了多种OpenCV函数,如line、arrowedLine、rectangle、polylines、fillPoly、circle和putText等。主要功能是展示OpenCV在图像处理中绘制图形和输出文本的能力。

【opencv】示例-drawing.cpp画线、箭头、矩形、多边形、椭圆、圆形以及在图像上渲染文本并通过循环实现动态绘制效果...

【opencv】示例-drawing.cpp画线、箭头、矩形、多边形、椭圆、圆形以及在图像上渲染文本并通过循环实现动态绘制效果...

line、arrowedLine、rectangle、polylines、fillPoly、circle和putText

【opencv】示例-drawing.cpp画线、箭头、矩形、多边形、椭圆、圆形以及在图像上渲染文本并通过循环实现动态绘制效果...

VPS购买请点击我

文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。

目录[+]