C++ OpenCV绘制形状和文字(附随机画线视频)

2019-07-24 13:01:29 浏览数 (1)

新建项目

新建一个项目opencv-0007,配置属性(VS2017配置OpenCV通用属性),然后在源文件写入#include和main方法.并加载我们常用的那个图片显示出来

运行一下效果

画直线

我们在代码的上方把源图像定义为全局变量,然后通过写不同的方法进行调用

然后在下面写MyLine()的方法实现

然后在main的方法里面加上画线操作

我们来看看效果,可以看到这个帅哥的头顶上有一条红线生成了.


画矩形

增加一个DrawRect的方法

加入调用方法

效果如下


画椭圆

定义一个新的方法DrawEllipse();

调用后的效果如下


画圆

定义一个新的方法DrawCircle();

然后加载进去,显示效果如下


画多边形

增加一个函数DrawfillPoly();

然后加载后显示的效果


绘制文字

我们再增加一个函数PutText()

显示效果如下


随意画线

我们增加一个函数DrawRendonLine()

核心代码: void DrawRendonLine() { //定义一个随机数 cv::RNG rng(112345); //定义画线的两个点 cv::Point pt1; cv::Point pt2; //定义一个新的图像,复制源图像 cv::Mat dst; src.copyTo(dst); //定义一个新的显示窗体 cv::namedWindow("image2", CV_WINDOW_AUTOSIZE); //做一个10000循环用于不停的画线 for (int i = 0; i < 100000; i ) { //设置pt1和pt2的点大小在图像的范围内 pt1.x = rng.uniform(0, dst.cols); pt1.y = rng.uniform(0, dst.rows); pt2.x = rng.uniform(0, dst.cols); pt2.y = rng.uniform(0, dst.rows); std::cout << "do now:" << i << std::endl; //随机定义颜色 cv::Scalar color = cv::Scalar(rng.uniform(0, 255), rng.uniform(0, 255), rng.uniform(0, 255)); //间隔50毫秒判断如果大于0就退出 if (cv::waitKey(50) > 0) { break; } //开始画线 cv::line(dst, pt1, pt2, color, 1, 8); //显示界面 cv::imshow("image2", dst); } }

图片显示效果

下面这个是随机画线的视频:

视频内容

-END-

0 人点赞