【OpenCV笔记 07】OpenCV中线段的绘制和文本的插入
2016-07-14 21:21
316 查看
1.本文将先介绍OpenCV中线段的绘制和文本的插入,使用到的函数line()和 putText()(前面的一片博文已经介绍过)
2.其次将应用于绘制大众车标的示例代码和运行结果一并附上。
绘制连接两个点的线段
img图像。pt1线段的第一个端点。pt2线段的第二个端点。color线段的颜色。thickness线段的粗细程度。line_type线段的类型。
8 (or 0) - 8-connected line(8邻接)连接 线。4 - 4-connected line(4邻接)连接线。CV_AA - antialiased 线条。shift坐标点的小数点位数。
函数cvLine 在图像中的点1和点2之间画一条线段。线段被图像或感兴趣的矩形(ROI rectangle)所裁剪。对于具有整数坐标的non-antialiasing 线条,使用8-连接或者4-连接Bresenham 算法。画粗线条时结尾是圆形的。画 antialiased 线条使用高斯滤波。要指定线段颜色,用户可以使用使用宏CV_RGB( r, g, b )。
代码如下:
运行结果:
2.其次将应用于绘制大众车标的示例代码和运行结果一并附上。
Line
绘制连接两个点的线段void cvLine( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8, int shift=0 );
img图像。pt1线段的第一个端点。pt2线段的第二个端点。color线段的颜色。thickness线段的粗细程度。line_type线段的类型。
8 (or 0) - 8-connected line(8邻接)连接 线。4 - 4-connected line(4邻接)连接线。CV_AA - antialiased 线条。shift坐标点的小数点位数。
函数cvLine 在图像中的点1和点2之间画一条线段。线段被图像或感兴趣的矩形(ROI rectangle)所裁剪。对于具有整数坐标的non-antialiasing 线条,使用8-连接或者4-连接Bresenham 算法。画粗线条时结尾是圆形的。画 antialiased 线条使用高斯滤波。要指定线段颜色,用户可以使用使用宏CV_RGB( r, g, b )。
代码如下:
/*OpenCV其他基本的图形绘制, 本文用到函数有circle(), line(), putText() 2016年7月14日 */ #include<opencv2/core/core.hpp> #include<opencv2/highgui/highgui.hpp> #include "opencv2/imgproc/imgproc.hpp" #include<iostream> using namespace cv; #define WinName1 "大众 VolksWagen" //定义宏,用于窗口命名 #define Win_Width 800 //定义宏,用于设置窗口大小 int main(int argc, char* argv) { Mat BG(Win_Width, Win_Width, CV_8UC3, Scalar(255,70,0));//创建一个800x800的画布BG,背景颜色为蓝色 //logo也可用circle()和polylines()设置 //logo的分为两部分,圆和图案部分,其中图案上呈“V”形,下呈“W”形 circle(BG, Point(400, 400), 300, Scalar(255,255,255), 6, 8, 0);//创建外圆,半径为300,线宽为6,颜色为蓝色,下同 cv::line(BG, Point(285,122), Point(395,395), Scalar(255,255,255), 6, 8, 0);//line1,"V"的左半部分 cv::line(BG, Point(516, 122), Point(405, 395), Scalar(255,255,255), 6, 8, 0);//line2,"V"的右半部分 cv::line(BG, Point(122, 285), Point(285, 677), Scalar(255,255,255), 6, 8, 0);//line3,"W"的左半部分左倾斜线 cv::line(BG, Point(395, 405), Point(285, 677), Scalar(255,255,255), 6, 8, 0);//line4,"W"的左半部分右倾斜线 cv::line(BG, Point(405, 405), Point(516, 677), Scalar(255,255,255), 6, 8, 0);//line5,"W"的右半部分左倾斜线 cv::line(BG, Point(677, 285), Point(516, 677), Scalar(255,255,255), 6, 8, 0);//line6,"W"的右半部分右倾斜线 cv::line(BG, Point(395,395), Point(405, 395), Scalar(255,255,255), 6, 8, 0);//line7,字母V短横线 cv::line(BG, Point(395, 405), Point(405,405), Scalar(255,255,255), 6, 8, 0);//line8,字母W短横线 //在图中插入文字 putText(BG, "VolksWagen", Point(260, 760), CV_FONT_HERSHEY_COMPLEX_SMALL, 2, Scalar(0,0,0)); imshow(WinName1, BG); waitKey(); return 0; } //PS:本文所有线段坐标,均为在AutoCAD自行度量并设置,只求效果相似。
运行结果:
相关文章推荐
- 书评:《算法之美( Algorithms to Live By )》
- 动易2006序列号破解算法公布
- C#递归算法之分而治之策略
- Ruby实现的矩阵连乘算法
- C#插入法排序算法实例分析
- C#算法之大牛生小牛的问题高效解决方法
- C#算法函数:获取一个字符串中的最大长度的数字
- 超大数据量存储常用数据库分表分库算法总结
- C#数据结构与算法揭秘二
- C#冒泡法排序算法实例分析
- 算法练习之从String.indexOf的模拟实现开始
- C#算法之关于大牛生小牛的问题
- C#实现的算24点游戏算法实例分析
- 经典排序算法之冒泡排序(Bubble sort)代码
- c语言实现的带通配符匹配算法
- 浅析STL中的常用算法
- 算法之排列算法与组合算法详解
- C++实现一维向量旋转算法
- Ruby实现的合并排序算法
- C#折半插入排序算法实现方法