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