网站地图 | RSS订阅 老铁博客 - 专业上海SEO上海SEO优化,分享网站优化知识,同时提供上海SEO服务。
你的位置:首页 » 前端脚本 » 正文

cvcircle 函数

2018-7-13 5:56:35 | 作者:老铁SEO | 0个评论 | 人浏览

功能:绘制或填充一个给定圆心和半径的圆。

 

函数形式:

void cvCircle (

CvArr * img,

CvPoint center,

int radius,

CvScalar color,

int thickness = 1,

int line_type = 8,

int shift = 0

)

 

参数列表:

img :为一个图像类型的指针,指向单通道或多通道的图像。

(一幅完整的图像在RGB色彩模式,是由红色绿色蓝色三个通道组成的。他们共同作用产生了完整的图像。单通道指的是图像的灰度图,三通道指的是图像的彩图。)

 

center :圆的圆心坐标。类型是CvPoint。它表示一个坐标为整数的二维点,是一个包含int类型成员x和y的简单结构体。以下是CvPoint的原型:

typedef struct CvPoint

{

int x; /* X坐标, 通常以0为基点 */

int y; /* y坐标, 通常以0为基点 */

CvPoint;

radius :圆的半径,数值为整数类型。

color :圆线条的颜色。

CvScalar数据结构,定义如下所示:

typedef struct{

 double val[4];

 }CvScalar ; 这种结构是四个双精度浮点型变量的集合。在这里,前三个分别代表红,绿,蓝通道;没有用到第四个。一个常用的宏指令是CV_RGB(r, g, b),该指令采用三个数字作为参数并将其封装到CvScalar,用于创建一个色彩值: #defineCV_RGB(r,g,b)  cvScalar((b),(g),(r)  )。

 

thickness :为设置圆线条的粗细,值越大则线条越粗。为负数则是填充效果,thickness参数也可以设置为CV_FILL,其值是-1,其结果是使用与边一样的颜色填充圆内部。

 

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):由于在图像中,受分辨的制约,物体边缘总会或多或少的呈现三角形的锯齿,而抗锯齿就是指对图像边缘进行柔化处理,使图像边缘看起来更平滑,更接近实物的物体。)

shift :圆心坐标点和半径值的小数点位数,数值为整数类型。

 

程序源代码(.cpp):

CV_IMPL void

cvCircle( CvArr* _img, CvPoint center, int radius,

          CvScalar color, int thickness, int line_type, int shift )

{

    cv::Mat img = cv::cvarrToMat(_img);

    cv::circle( img, center, radius, 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);

}

 

  • 本文来自: 老铁博客,转载请保留出处!欢迎发表您的评论
  • 相关标签:cvcircle  
  • 已有0位网友发表了一针见血的评论,你还等什么?

    必填

    选填

    记住我,下次回复时不用重新输入个人信息

    必填,不填不让过哦,嘻嘻。

    ◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

    相关推荐