前面介绍了opencv在图像中查找直线函数HoughLines,今天讲一下通过opencv的Line函数,在图像中绘制一条我们想要的直线或者线段,以及使用Rectangle函数绘制矩形。学过几何数学我们知道,确定一条直线需要两个点,所以,在绘制直线之前我们需要两个图像坐标,以及绘制直线的颜色。直线颜色我们可以通过opencv提供的CV_RGB函数创建一种颜色,下面一起来学习下吧。
CV_RGB
创建一个色彩值.
#define CV_RGB( r, g, b ) cvScalar( (b), (g), (r) )
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 )。
Rectangle
绘制简单、指定粗细或者带填充的 矩形
void cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2, CvScalar color, int thickness=1, int line_type=8, int shift=0 );
- img
- 图像.
- pt1
- 矩形的一个顶点。
- pt2
- 矩形对角线上的另一个顶点
- color
- 线条颜色 (RGB) 或亮度(灰度图像 )(grayscale image)。
- thickness
- 组成矩形的线条的粗细程度。取负值时(如 CV_FILLED)函数绘制填充了色彩的矩形。
- line_type
- 线条的类型。见cvLine的描述
- shift
- 坐标点的小数点位数。
函数 cvRectangle 通过对角线上的两个顶点绘制矩形。
原创文章,作者:奋斗,如若转载,请注明出处:https://blog.ytso.com/241761.html