【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在图像处理中绘制图形和输出文本的能力。
line、arrowedLine、rectangle、polylines、fillPoly、circle和putText
文章版权声明:除非注明,否则均为主机测评原创文章,转载或复制请以超链接形式并注明出处。