赞
踩
介绍了绘制、填充图像的API。也介绍了RNG类用来生成随机数。相关API:
line()
rectangle()
circle()
ellipse()
putText()
代码:
- #include "iostream"
- #include "opencv2/opencv.hpp"
-
- using namespace std;
- using namespace cv;
-
- int main(int argc, char *argv)
- {
- //【画布(图片)、窗口创建】
- Mat canvas = Mat::zeros(Size(512, 512), CV_8UC3);
- namedWindow("canvas", WINDOW_AUTOSIZE);
-
- //【相关绘制API]】
- //线段
- line(canvas, Point(10, 10), Point(400, 400), Scalar(0, 255, 255), 1, LINE_8); //API(画布,点,点,色彩,线粗,渲染方式),渲染方式是枚举值,LINE_AA可以实现抗锯齿效果。
- //矩形
- Rect rect(100, 100, 200, 200); //(起始点位置,宽高)宽高不可为负值
- rectangle(canvas, rect, Scalar(255, 0, 0), 1, LINE_8); //API
- //圆形
- circle(canvas, Point(256, 256), 100, Scalar(0, 255, 0), 1, 8); //API(画布,圆心,半径,色彩,线粗,渲染方式)
- //椭圆
- RotatedRect rrt; //通过这个对象设置一些矩形数据
- rrt.center = Point2f(256, 256); //椭圆中心
- rrt.angle = 45; //旋转角度,可以为负值,反向旋转
- rrt.size = Size(100, 200); //椭圆尺幅,可以理解为把椭圆圈起来的矩形的大小
- ellipse(canvas, rrt, Scalar(0, 255, 255), -1, 8); //API(画布,RotatedRect对象,色彩,线粗,渲染方式),线粗参数设置-1图形变填充。
- //文字
- putText(canvas, "hello,world", Point(100, 50), FONT_HERSHEY_SIMPLEX, 1.0, Scalar(0, 255, 0), 2, 8); //API(画布,文字,起始点,字体,大小,色彩,粗细,渲染方式)
-
- imshow("canvas", canvas);
-
- //【随机绘制】
- /*
- Mat image = Mat::zeros(Size(512, 512), CV_8UC3);
- Rect rect1;
- int x1 = 0, y1 = 0;
- int x2 = 0, y2 = 0;
- RNG rng(12345); //随机数,参数是设置的种子。
- while (true)
- {
- //把image转变为纯黑图,相当于每次绘制前清空image图片。可以去掉注释运行看看效果。
- //image = Scalar(0, 0, 0);
- //两个点的x,y取随机值
- x1 = rng.uniform(0, 512);//0~511的范围随机,[0,512)
- y1 = rng.uniform(0, 512);
- x2 = rng.uniform(0, 512);
- y2 = rng.uniform(0, 512);
- //取两点间宽高
- int w = abs(x2 - x1); //取绝对值
- int h = abs(y2 - y1);
- //画线
- line(image, Point(x1, y1), Point(x2, y2), Scalar(rng.uniform(0, 256), rng.uniform(0, 256), rng.uniform(0, 256)), 1, LINE_8);
- //画矩形
- rect1.x = x1;
- rect1.y = y1;
- rect1.width = w;
- rect1.height = h;
- rectangle(image, rect1, Scalar(255, 0, 0), 1, LINE_8);
- imshow("image", image);
- //按下任意键(英文输入法)退出循环,停止随机绘制
- if (waitKey(10) >= 0)
- {
- break;
- }
- }
- */
-
- waitKey(0);
- destroyAllWindows();
- return 0;
- }
除了几个API的使用要了解,还要了解这段代码中用到的各种类对象相关内容。
Rect
RotatedRect
RNG
.uniform(),[x,y)
这里分别用于了矩阵,椭圆的绘制,以及获取随机数。
演示:
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。