概述
功能:画一条线段连接两个点。
函数形式:
void cvLine (
CvArr * img,
CvPoint pt1,
CvPoint pt2,
CvScalar color,
int thickness = 1,
int line_type = 8,
int shift = 0
)
参数列表:
img :为一个图像类型的指针,指向单通道或多通道的图像。
(一幅完整的图像在RGB色彩模式,是由红色绿色蓝色三个通道组成的。他们共同作用产生了完整的图像。单通道指的是图像的灰度图,三通道指的是图像的彩图。)
pt1 :线段的起始点。
pt2 :线段的终止点。
(pt1和pt2都是CvPoint类型。CvPoint是一种简单的数据结构,它只包括整型变量x和y。我们可以用CvPoint(int x,int y)函数快速地构造一个CvPoint类型的变量,这样可以方便地把两个整型变量值赋给CvPoint数据结构。 )
color :线条的颜色。
CvScalar数据结构,定义如下所示:
typedef struct{
double val[4];
}CvScalar ; 这种结构是四个双精度浮点型变量的集合。在这里,前三个分别代表红,绿,蓝通道;没有用到第四个。一个常用的宏指令是CV_RGB(r, g, b),该指令采用三个数字作为参数并将其封装到CvScalar,用于创建一个色彩值: #defineCV_RGB(r,g,b) cvScalar((b),(g),(r) )。
thickness :线段的粗细程度(数字越大则线段越粗)。
line_type :线段的类型。可以取8,4,CV_AA三个值,分别代表8邻接连接线,4邻接连接线和反锯齿连接线。默认值为8邻接。为了获得更好地效果可以选用CV_AA(采用了高斯滤波)。
( 1.邻域:数字图像中,邻域分为4邻域和8邻域,4邻域就是某个(x,y)点的上下左右四个点,8邻域再加上左上右上左下右下四个点。如果p在q周围的8个点内,就是p在q的8邻域内。
2.邻接:邻接算是包含了邻域,如果说p和q是邻接,那么p和q必须互在邻域内,而且这两个的像素还要都在同一个集合内。
3.反锯齿(Anti-aliasing):由于在3D图像中,受分辨的制约,物体边缘总会或多或少的呈现三角形的锯齿,而抗锯齿就是指对图像边缘进行柔化处理,使图像边缘看起来更平滑,更接近实物的物体。
)
shift :坐标点的小数点位数。
程序源代码(.cpp):
CV_IMPL void
cvLine( CvArr* _img, CvPoint pt1, CvPoint pt2, CvScalar color,
int thickness, int line_type, int shift )
{
cv::Mat img = cv::cvarrToMat(_img);
cv::line( img, pt1, pt2, color, thickness, line_type, shift );
}
程序应用示例:
#include <cv.h>
#include <highgui.h>
#define CV_RGB( r, g, b ) cvScalar( (b), (g), (r), 0 )
void main(void)
{
IplImage *src = cvLoadImage("test.jpg");
cvLine(src, cvPoint(3, 3), cvPoint(3, 300), CV_RGB(255, 255, 255), 1, 8); //画线段
cvRectangle(src, cvPoint(10, 10), cvPoint(100, 100), CV_RGB(255, 255, 255), 1); //画矩形
cvCircle(src, cvPoint(200, 200), 50, CV_RGB(255, 255, 255), 1); //画圆
cvEllipse(src, cvPoint(200, 200), cvSize(100, 50), 90, 0, 360, CV_RGB(255, 255, 255), 1, 8); //画椭圆
cvNamedWindow("src");
cvShowImage("src", src);
cvWaitKey(0);
}
最后
以上就是纯情嚓茶为你收集整理的cvLine函数的全部内容,希望文章能够帮你解决cvLine函数所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复