常用宏定义:

#define CV_RGB( r, g, b )  cvScalar( (b), (g), (r), 0 )
#define CV_FILLED -1#define CV_AA 16
#define cvDrawRect cvRectangle
#define cvDrawLine cvLine
#define cvDrawCircle cvCircle
#define cvDrawEllipse cvEllipse
#define cvDrawPolyLine cvPolyLine

########################################################3

直线 cvLine()

/* Draws 4-connected, 8-connected or antialiased line segment connecting two points */
CVAPI(void)  cvLine( CvArr* img, CvPoint pt1, CvPoint pt2,CvScalar color, int thickness CV_DEFAULT(1),int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) );

array:输入图像

pt1、pt2:直线的两点  CvPoint()结构

typedef struct CvPoint
{int x;int y;
}
CvPoint;

color:边的颜色 CvScalar结构

typedef struct CvScalar
{double val[4];
}
CvScalar;

这种结构是四个双精度浮点型变量的集合,前三个分别代表红、绿、蓝通道

常用的便捷宏指令CV_RGB(r, g, b)

###############################################################

矩形 cvRectagle()

/* Draws a rectangle given two opposite corners of the rectangle (pt1 & pt2),if thickness<0 (e.g. thickness == CV_FILLED), the filled box is drawn */
CVAPI(void)  cvRectangle( CvArr* img, CvPoint pt1, CvPoint pt2,CvScalar color, int thickness CV_DEFAULT(1),int line_type CV_DEFAULT(8),int shift CV_DEFAULT(0));

pt1和pt2为对顶角

thickness参数可设置为CV_FILL,其值是-1,表示使用color填充内部 在圆形和矩阵等很多封闭图形函数都可用

################################################################

圆形 cvCircle()

/* Draws a circle with specified center and radius.Thickness works in the same way as with cvRectangle */
CVAPI(void)  cvCircle( CvArr* img, CvPoint center, int radius,CvScalar color, int thickness CV_DEFAULT(1),int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0));

center:圆中心 CvPoint()结构

radius:圆半径

##############################################################

椭圆 cvEllipse() cvEllipseBox

/* Draws ellipse outline, filled ellipse, elliptic arc or filled elliptic sector,depending on <thickness>, <start_angle> and <end_angle> parameters. The resultant figureis rotated by <angle>. All the angles are in degrees */
CVAPI(void)  cvEllipse( CvArr* img, CvPoint center, CvSize axes,double angle, double start_angle, double end_angle,CvScalar color, int thickness CV_DEFAULT(1),int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0));

axes:CvSize()结构,height和width参数分别表示椭圆的长短半轴长

typedef struct CvSize
{int width;int height;
}
CvSize;

angle:指偏离主轴的角度,从X轴算起,逆时针为正

start_angle和end_angle表示弧线可是和结束位置的角度。因此,一个完整的椭圆必须分别将这两个值分别设为0度和360度

CV_INLINE  void  cvEllipseBox( CvArr* img, CvBox2D box, CvScalar color,int thickness CV_DEFAULT(1),int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) )
{CvSize axes;axes.width = cvRound(box.size.width*0.5);axes.height = cvRound(box.size.height*0.5);cvEllipse( img, cvPointFrom32f( box.center ), axes, box.angle,0, 360, color, thickness, line_type, shift );
}

box:CvBox2D结构

typedef struct CvBox2D
{CvPoint2D32f center;  /* Center of the box.                          */CvSize2D32f  size;    /* Box width and length.                       */float angle;          /* Angle between the horizontal axis           *//* and the first side (i.e. length) in degrees */
}
CvBox2D;

####################################################################

void paint(void)
{IplImage *src=cvLoadImage("lena.jpg");if (src == NULL){exit(0);}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(350, 350), 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);CvSize2D32f size=cvSize2D32f(100, 50);CvBox2D box;box.center.x = 100;box.center.y = 300;box.size = size;box.angle = 90;cvEllipseBox(src, box, CV_RGB(255, 255, 255), 1, 8, 0);cvNamedWindow("src");cvShowImage("src", src);cvWaitKey(0);cvReleaseImage(&src);cvDestroyWindow("src");
}

######################################################################################

/* Fills convex or monotonous polygon. */
CVAPI(void)  cvFillConvexPoly( CvArr* img, const CvPoint* pts, int npts, CvScalar color,int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0));

cvFillConvexPoly()一次只能画一个多边形,而且只能画凸多边形

pts:存储点的数组

npts:存储点的数目

void convexPoly(void)
{IplImage *Image1;CvPoint PointArray1[6];int PolyVertexNumber;int Shift;CvSize ImageSize1 = cvSize(1000,700);Image1 = cvCreateImage(ImageSize1, IPL_DEPTH_8U, 3);PointArray1[0]=cvPoint(200,200);PointArray1[1]=cvPoint(400,100);PointArray1[2]=cvPoint(650,230);PointArray1[3]=cvPoint(800,300);PointArray1[4]=cvPoint(900,550);PointArray1[5]=cvPoint(100,400);CvScalar Color=CV_RGB(255,255,255);PolyVertexNumber=6;Shift=0;cvFillConvexPoly(Image1,PointArray1,PolyVertexNumber,Color,CV_AA,Shift);cvNamedWindow("FillConvexPoly",0);cvShowImage("FillConvexPoly",Image1);cvWaitKey(0);cvSaveImage("poly.jpg",Image1);cvReleaseImage(&Image1);
}

#######################################################

/* Fills an area bounded by one or more arbitrary polygons */
CVAPI(void)  cvFillPoly( CvArr* img, CvPoint** pts, const int* npts,int contours, CvScalar color,int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) );/* Draws one or more polygonal curves */
CVAPI(void)  cvPolyLine( CvArr* img, CvPoint** pts, const int* npts, int contours,int is_closed, CvScalar color, int thickness CV_DEFAULT(1),int line_type CV_DEFAULT(8), int shift CV_DEFAULT(0) );

npts:由记数点构成的数组,与多边形对应

is_closed为true:则起点和终点连线;否则,不连线

void fillPoly(void)
{IplImage *src=cvLoadImage("lena.jpg");if (src == NULL)exit(0);CvPoint** pt=new CvPoint*[1];pt[0]=new CvPoint[6];pt[0][0]=cvPoint(100, 100);pt[0][1]=cvPoint(400, 50);pt[0][2]=cvPoint(500, 400);pt[0][3]=cvPoint(300, 500);pt[0][4]=cvPoint(200, 300);pt[0][5]=cvPoint(50, 400);int *npt=new int[1];npt[0]=6;int contours=1;cvFillPoly(src, pt, npt, contours, CV_RGB(255, 255, 255), 8);//cvPolyLine(src, pt, npt, contours, 1, CV_RGB(255, 255, 255));//is_closed为true则将起点和终点连线//cvPolyLine(src, pt, npt, contours, 0, CV_RGB(255, 255, 255));//is_closed为false则不将起点和终点连线cvNamedWindow("src");cvShowImage("src", src);cvWaitKey(0);cvReleaseImage(&src);cvDestroyWindow("src");
}

opencv 绘图 cvLine cvRectangle cvCircle cvEllipse cvEllipseBox cvFillPoly cvConvexPoly cvPolyLine相关推荐

  1. OpenCV繪圖的實作-cvCircle,cvEllipse,cvEllipseBox

    转自:http://www.90in.net/space-4-do-blog-id-10218.html OpenCV繪圖的實作-cvCircle,cvEllipse,cvEllipseBox 圓的製 ...

  2. opencv在电脑屏幕上画_opencv平滑处理?opencv 画实心圆?OpenCV繪圖的實作-cvCircle,cvEllipse,cvElli...

    你是否正在寻找关于cvcircle的内容?让我把最吸引人的东西奉献给你: 转自: OpenCV繪圖的實作-cvcircle,cvEllipse,cvEllipseBox 圓的製作,要給他目標圖片,圓心 ...

  3. OpenCV绘图和文本输出功能的实例(附完整代码)

    OpenCV绘图和文本输出功能的实例 OpenCV绘图和文本输出功能的实例 OpenCV绘图和文本输出功能的实例 #include "opencv2/core.hpp" #incl ...

  4. OpenCV绘图函数:cv2.line、cv2.circle、cv2.rectangle、cv2.ellipse、 cv2.putText()、cv2.setMouseCallback

    ​OpenCV是一个用于图像处理.分析.机器视觉方面的开源函数库. 不管你是做科学研究,还是商业应用,opencv都能够作为你理想的工具,它可以运行在Linux.Windows.Android和Mac ...

  5. [opencv] cvline cvcircle cvEllipse等画图操作

    1.cvline cvLine(image,p1,p2,CV_RGB(255,255,255),3,8,0); //p1,p2分别为起点和终点 为Tcvpoint类型数据,3表示线宽,8表示线条类型 ...

  6. 【opencv】2.opencv绘图、视频等

    1.opencv在图片中绘图常使用的几个函数 opencv中的(0,0)坐标是在图像的左上角. cv::putText的用法: 对于cv::putText后面参数int lineType = 8, 是 ...

  7. python opencv单通道转多通道_13、OpenCV绘图和文本显示

    我们经常想要绘制各种形状,为此,OpenCV提供了一系列功能,可以绘制直线,矩形,圆等.OpenCV的绘图功能适用于图像,但其中大多数仅影响前三个通道,在单通道图像的情况下仅默认第一个通道.大多数绘图 ...

  8. python OpenCV 绘图函数

    OpenCV可以用来绘制不同的集合图形,包括直线,矩形,圆,椭圆,多边形以及在图片上添加文字.用到的绘图函数包括 cv2.line(),cv2.circle(),cv2.rectangle() ,cv ...

  9. OpenCV绘图和注释

    OpenCV的绘图函数可以在任意深度的图像上工作,但在大多数情况下,它们只对图像的前三个通道有影响BGR,如果是单通道图像,则默认只影响第一个通道.大多数绘图函数都支持操作对象的颜色.宽度.线型和亚像 ...

最新文章

  1. Android开发中libs包下面的mips、armeabi、armeabi-v7a和x86
  2. mysql 返回mysql,mysql函数返回表
  3. 斯坦福大学 计算机视觉方面课程资料
  4. CF1556D-Take a Guess【交互】
  5. C# DateTime简单的定时器用法
  6. 回发或回调参数无效。在配置中使用 enableEventValidation=true或在页面中启用了事件验证...(转)...
  7. event.target
  8. 关于 IHTMLDocument4 在 Delphi7.0 中不能编译的的解决方法
  9. 平常学习与实际应用场景
  10. n阶方阵的蛇形排列java_排列组合的模板算法
  11. 曲速未来 揭示:发现假EOS钱包窃取用户资金
  12. 页面加载中的css,JS+CSS实现网页加载中的动画效果
  13. 人脸识别7-人脸图片相似度
  14. HTML5多文件上传插件----zyUpload
  15. clonezilla的可启动U盘的制作及使用
  16. Python如何设置文件保存位置(txt文件保存位置)
  17. 文件存储名片java_java做的名片管理系统
  18. 基于GeoHash算法的地理位置检索
  19. 关于宿舍熄灯时间的调查报告
  20. super关键字的用法

热门文章

  1. 什么是酷雷曼VR全景视图?全景图拼接的原理是什么?
  2. 【Python】逆向爬虫-----模拟试客联盟登录(RSA)
  3. 关于Open SSL高危漏洞整改操作 -- AIX 整改措施
  4. mysql 导入.trg_MySQL 升级方法指南大全第3/5页
  5. Lua 批量修改文件夹下文件名
  6. 张小龙“微信之夜”大谈视频:内容领域下一个十年的主题(附万字实录)
  7. NF网元介绍之AMF
  8. 攻防世界Misc:nice_bgm
  9. ACM/ICPC 之 双向链表_构造列表-模拟祖玛 (TSH OJ-Zuma(祖玛))
  10. 一篇文章彻底学会画数据流图