前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >C++ OpenCV绘制形状和文字(附随机画线视频)

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

作者头像
Vaccae
发布2019-07-24 13:01:29
2K0
发布2019-07-24 13:01:29
举报
文章被收录于专栏:微卡智享微卡智享

新建项目

新建一个项目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-

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2018-04-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 微卡智享 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档