4.opencv之画图2
来源:互联网 发布:淘宝网京剧服装青衣 编辑:程序博客网 时间:2024/05/01 17:19
程序来源:F:\opencv\opencv\samples\cpp\tutorial_code\core\Matrix
程序:
/** * @file Drawing_2.cpp * @brief Simple sample code */#include <opencv2/core/core.hpp>#include <opencv2/highgui/highgui.hpp>#include <iostream>#include <stdio.h>using namespace cv;/// Global Variablesconst int NUMBER = 100;const int DELAY = 5;const int window_width = 900;const int window_height = 600;int x_1 = -window_width/2;int x_2 = window_width*3/2;int y_1 = -window_width/2;int y_2 = window_width*3/2;/// Function headersstatic Scalar randomColor( RNG& rng );int Drawing_Random_Lines( Mat image, char* window_name, RNG rng );int Drawing_Random_Rectangles( Mat image, char* window_name, RNG rng );int Drawing_Random_Ellipses( Mat image, char* window_name, RNG rng );int Drawing_Random_Polylines( Mat image, char* window_name, RNG rng );int Drawing_Random_Filled_Polygons( Mat image, char* window_name, RNG rng );int Drawing_Random_Circles( Mat image, char* window_name, RNG rng );int Displaying_Random_Text( Mat image, char* window_name, RNG rng );int Displaying_Big_End( Mat image, char* window_name, RNG rng );/** * @function main */int main( int argc, char** argv ){ int c; /// Start creating a window char window_name[] = "Drawing_2 Tutorial"; /// Also create a random object (RNG) RNG rng( 0xFFFFFFFF ); /// Initialize a matrix filled with zeros Mat image = Mat::zeros( window_height, window_width, CV_8UC3 ); /// Show it in a window during DELAY ms imshow( window_name, image ); waitKey( DELAY ); /// Now, let's draw some lines c = Drawing_Random_Lines(image, window_name, rng); if( c != 0 ) return 0; /// Go on drawing, this time nice rectangles c = Drawing_Random_Rectangles(image, window_name, rng); if( c != 0 ) return 0; /// Draw some ellipses c = Drawing_Random_Ellipses( image, window_name, rng ); if( c != 0 ) return 0; /// Now some polylines c = Drawing_Random_Polylines( image, window_name, rng ); if( c != 0 ) return 0; /// Draw filled polygons c = Drawing_Random_Filled_Polygons( image, window_name, rng ); if( c != 0 ) return 0; /// Draw circles c = Drawing_Random_Circles( image, window_name, rng ); if( c != 0 ) return 0; /// Display text in random positions c = Displaying_Random_Text( image, window_name, rng ); if( c != 0 ) return 0; /// Displaying the big end! c = Displaying_Big_End( image, window_name, rng ); if( c != 0 ) return 0; waitKey(0); return 0;}/// Function definitions/** * @function randomColor * @brief Produces a random color given a random object */static Scalar randomColor( RNG& rng ){ int icolor = (unsigned) rng; return Scalar( icolor&255, (icolor>>8)&255, (icolor>>16)&255 );}/** * @function Drawing_Random_Lines */int Drawing_Random_Lines( Mat image, char* window_name, RNG rng ){ int lineType = 8; Point pt1, pt2; for( int i = 0; i < NUMBER; i++ ) { pt1.x = rng.uniform( x_1, x_2 ); pt1.y = rng.uniform( y_1, y_2 ); pt2.x = rng.uniform( x_1, x_2 ); pt2.y = rng.uniform( y_1, y_2 ); line( image, pt1, pt2, randomColor(rng), rng.uniform(1, 10), 8 ); imshow( window_name, image ); if( waitKey( DELAY ) >= 0 ) { return -1; } } return 0;}/** * @function Drawing_Rectangles */int Drawing_Random_Rectangles( Mat image, char* window_name, RNG rng ){ Point pt1, pt2; int lineType = 8; int thickness = rng.uniform( -3, 10 ); for( int i = 0; i < NUMBER; i++ ) { pt1.x = rng.uniform( x_1, x_2 ); pt1.y = rng.uniform( y_1, y_2 ); pt2.x = rng.uniform( x_1, x_2 ); pt2.y = rng.uniform( y_1, y_2 ); rectangle( image, pt1, pt2, randomColor(rng), MAX( thickness, -1 ), lineType ); imshow( window_name, image ); if( waitKey( DELAY ) >= 0 ) { return -1; } } return 0;}/** * @function Drawing_Random_Ellipses */int Drawing_Random_Ellipses( Mat image, char* window_name, RNG rng ){ int lineType = 8; for ( int i = 0; i < NUMBER; i++ ) { Point center; center.x = rng.uniform(x_1, x_2); center.y = rng.uniform(y_1, y_2); Size axes; axes.width = rng.uniform(0, 200); axes.height = rng.uniform(0, 200); double angle = rng.uniform(0, 180); ellipse( image, center, axes, angle, angle - 100, angle + 200, randomColor(rng), rng.uniform(-1,9), lineType ); imshow( window_name, image ); if( waitKey(DELAY) >= 0 ) { return -1; } } return 0;}/** * @function Drawing_Random_Polylines */int Drawing_Random_Polylines( Mat image, char* window_name, RNG rng ){ int lineType = 8; for( int i = 0; i< NUMBER; i++ ) { Point pt[2][3]; pt[0][0].x = rng.uniform(x_1, x_2); pt[0][0].y = rng.uniform(y_1, y_2); pt[0][1].x = rng.uniform(x_1, x_2); pt[0][1].y = rng.uniform(y_1, y_2); pt[0][2].x = rng.uniform(x_1, x_2); pt[0][2].y = rng.uniform(y_1, y_2); pt[1][0].x = rng.uniform(x_1, x_2); pt[1][0].y = rng.uniform(y_1, y_2); pt[1][1].x = rng.uniform(x_1, x_2); pt[1][1].y = rng.uniform(y_1, y_2); pt[1][2].x = rng.uniform(x_1, x_2); pt[1][2].y = rng.uniform(y_1, y_2); const Point* ppt[2] = {pt[0], pt[1]}; int npt[] = {3, 3}; polylines(image, ppt, npt, 2, true, randomColor(rng), rng.uniform(1,10), lineType); imshow( window_name, image ); if( waitKey(DELAY) >= 0 ) { return -1; } } return 0;}/** * @function Drawing_Random_Filled_Polygons */int Drawing_Random_Filled_Polygons( Mat image, char* window_name, RNG rng ){ int lineType = 8; for ( int i = 0; i < NUMBER; i++ ) { Point pt[2][3]; pt[0][0].x = rng.uniform(x_1, x_2); pt[0][0].y = rng.uniform(y_1, y_2); pt[0][1].x = rng.uniform(x_1, x_2); pt[0][1].y = rng.uniform(y_1, y_2); pt[0][2].x = rng.uniform(x_1, x_2); pt[0][2].y = rng.uniform(y_1, y_2); pt[1][0].x = rng.uniform(x_1, x_2); pt[1][0].y = rng.uniform(y_1, y_2); pt[1][1].x = rng.uniform(x_1, x_2); pt[1][1].y = rng.uniform(y_1, y_2); pt[1][2].x = rng.uniform(x_1, x_2); pt[1][2].y = rng.uniform(y_1, y_2); const Point* ppt[2] = {pt[0], pt[1]}; int npt[] = {3, 3}; fillPoly( image, ppt, npt, 2, randomColor(rng), lineType ); imshow( window_name, image ); if( waitKey(DELAY) >= 0 ) { return -1; } } return 0;}/** * @function Drawing_Random_Circles */int Drawing_Random_Circles( Mat image, char* window_name, RNG rng ){ int lineType = 8; for (int i = 0; i < NUMBER; i++) { Point center; center.x = rng.uniform(x_1, x_2); center.y = rng.uniform(y_1, y_2); circle( image, center, rng.uniform(0, 300), randomColor(rng), rng.uniform(-1, 9), lineType ); imshow( window_name, image ); if( waitKey(DELAY) >= 0 ) { return -1; } } return 0;}/** * @function Displaying_Random_Text */int Displaying_Random_Text( Mat image, char* window_name, RNG rng ){ int lineType = 8; for ( int i = 1; i < NUMBER; i++ ) { Point org; org.x = rng.uniform(x_1, x_2); org.y = rng.uniform(y_1, y_2); putText( image, "Testing text rendering", org, rng.uniform(0,8), rng.uniform(0,100)*0.05+0.1, randomColor(rng), rng.uniform(1, 10), lineType); imshow( window_name, image ); if( waitKey(DELAY) >= 0 ) { return -1; } } return 0;}/** * @function Displaying_Big_End */int Displaying_Big_End( Mat image, char* window_name, RNG rng ){ Size textsize = getTextSize("OpenCV forever!", CV_FONT_HERSHEY_COMPLEX, 3, 5, 0); Point org((window_width - textsize.width)/2, (window_height - textsize.height)/2); int lineType = 8; Mat image2; for( int i = 0; i < 255; i += 2 ) { image2 = image - Scalar::all(i); putText( image2, "OpenCV forever!", org, CV_FONT_HERSHEY_COMPLEX, 3, Scalar(i, i, 255), 5, lineType ); imshow( window_name, image2 ); if( waitKey(DELAY) >= 0 ) { return -1; } } return 0;}运行结果及解释见:
http://www.opencv.org.cn/opencvdoc/2.3.2/html/doc/tutorials/core/random_generator_and_text/random_generator_and_text.html
- 4.opencv之画图2
- OpenCV之鼠标画图
- 3.opencv之画图1
- OpenCV 2 学习之”鼠标描点画图“
- OpenCV画图
- opencv之画图(Drawing Functions in OpenCV )
- 1.1.2-学习Opencv与MFC混合编程之---画图工具 画直线 画圆 画矩形
- Opencv学习之鼠标响应及画图操作
- opencv画图函数
- OpenCV基本画图功能
- python+opencv画图操作
- OpenCV的一个画图程序!
- 如何在opencv中画图
- ios--OpenCV--画图像轮廓
- MFC动态绘图+OpenCV画图
- opencv实现简易画图工具
- 1.1-学习Opencv与MFC混合编程之---利用画图函数,生成视频,并写入视频文件
- 1.1.4-学习Opencv与MFC混合编程之---画图工具 画椭圆
- MySQL内存使用说明(全局缓存+线程缓存)
- python 访问LDAP服务器
- 0001 计算机语言概述
- error LNK2005 已经在 obj 中定义 错误
- 前谷歌高管给初入职场新人的14条忠告
- 4.opencv之画图2
- 将goagent配置为系统服务
- ZOJ 2475 Benny's Compiler(DFS)
- [Hadoop] 完全分布式集群安装过程详解
- 详解c++内存分配方式
- 调试技巧之调用堆栈 - Call stack
- 修改 Chrome 调试器为黑底白字样式
- SQL 练习
- Jquery测试题