Open CV 学习笔记:基本图形绘制
2015-03-26 13:01
537 查看
1.用于绘制直线的line函数
2.用于绘制圆的circle函数
3.[b]用于绘制椭圆的ellipse函数[/b]
4.用于绘制矩形的rectangle函数
5.用于绘制填充多边形的fillPoly函数
C++: void circle(Mat&img, Point center, intradius, const Scalar&color,intthickness=1, intlineType=8, intshift=0)
C++: void ellipse(Mat& img, constRotatedRect& box, const Scalar& color, int thickness=1, int lineType=8)
C++: void rectangle(Mat& img,Rect rec, const Scalar&color, intthickness=1, intlineType=8,intshift=0 )
C++: void fillPoly(InputOutputArray img, InputArrayOfArrays pts, const Scalar& color, int thickness=1, int lineType=8, int shift=0 )
![](https://img-blog.csdn.net/20150326130108799?watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvcm9seV95dQ==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/SouthEast)
2.用于绘制圆的circle函数
3.[b]用于绘制椭圆的ellipse函数[/b]
4.用于绘制矩形的rectangle函数
5.用于绘制填充多边形的fillPoly函数
Line
C++: void line(Mat& img, Point pt1,Point pt2, const Scalar& color, int thickness=1, int lineType=8,int shift=0)Parameters: | img – 图像. pt1 – 线条起点. pt2 – 线条终点. color – 线条颜色. thickness – 线条宽度. lineType – 线型 Type of the line: 8 (or omitted) - 8-connected line. 4 - 4-connected line. CV_AA - antialiased line. shift – 坐标点小数点位数. |
Circle
Parameters: | img – 要画圆的那个矩形. center – 圆心坐标. radius – 半径. color – 圆边框颜色,scalar类型的 thickness – 正值表示圆边框宽度. 负值表示画一个填充圆形 lineType – 圆边框线型 shift – 圆心坐标和半径的小数点位数 |
Ellipse
C++: void ellipse(Mat& img, Point center,Size axes, double angle, double startAngle, double endAngle, const Scalar& color,int thickness=1, int lineType=8, int shift=0)C++: void ellipse(Mat& img, constRotatedRect& box, const Scalar& color, int thickness=1, int lineType=8)
Parameters: | img – 椭圆所在图像. center – 椭圆中心. axes – 椭圆主轴一半的长度 angle – 椭圆旋转角度 startAngle – 椭圆弧起始角度 endAngle –椭圆弧终止角度 box – 指定椭圆中心和旋转角度的信息,通过 RotatedRect 或 CvBox2D. 这表示椭圆画在旋转矩形上(矩形是不可见的,只是指定了一个框而已) color – 椭圆边框颜色. thickness – 正值代表椭圆边框宽度,负值代表填充的椭圆 lineType – 线型 shift – 椭圆中心坐标和坐标轴的小数点位数 |
Rectangle
C++: void rectangle(Mat& img,Point pt1, Pointpt2, const Scalar&color, intthickness=1,intlineType=8, intshift=0)C++: void rectangle(Mat& img,Rect rec, const Scalar&color, intthickness=1, intlineType=8,intshift=0 )
Parameters: | img – 画矩形的对象 pt1 – 矩形的一个顶点,左上角的. pt2 – 另一个顶点,右下角的. rec – 确定矩形的另一种方式,给左上角坐标和长宽 color – 指定矩形的颜色或亮度(灰度图像),scalar(255,0,255)既可指定. thickness – 矩形边框的粗细. 负值(like CV_FILLED)表示要画一个填充的矩形 lineType – 边框线型. ( 8 (or 0) - 8-connected line(8邻接)连接 线。 4 - 4-connected line(4邻接)连接线。 CV_AA - antialiased 线条。) shift –坐标点的小数点位数 |
fillPoly
C++: void fillPoly(Mat& img, const Point** pts, const int* npts, int ncontours, const Scalar& color, int thickness=1, int lineType=8, int shift=0 )C++: void fillPoly(InputOutputArray img, InputArrayOfArrays pts, const Scalar& color, int thickness=1, int lineType=8, int shift=0 )
Parameters: | img – 折线所在图像 pts – 折线中拐点坐标指针. npts – 折线拐点个数指针. ncontours – 折线线段数量. color – 折线颜色. thickness – 折线宽度. lineType – 线型. shift – 椭圆中心坐标和坐标轴的小数点位数 |
#include <opencv2/opencv.hpp> #include <opencv2/core/core.hpp> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #define WINDOW_NAME "CHUANG" #define WINDOW_WIDTH 600 using namespace cv; void DrawEllipse(Mat img,double angle){//绘制椭圆形 int thickness = 7; int lineType = 8; ellipse(img, Point(WINDOW_WIDTH/2,WINDOW_WIDTH/2), Size(WINDOW_WIDTH/4,WINDOW_WIDTH/16), angle, 0, 60, Scalar(25,129,240), thickness, lineType); } void DrawFilledCircle(Mat& img,Point center){//绘制圆形 int thickness = -1; int lineType = 8; circle(img, center, WINDOW_WIDTH/32, Scalar(43,223,34), thickness, lineType); } void DrawPolygon(Mat img){//绘制多边形 int lineType = 8; Point pp[2][4]; pp[0][0] = Point(WINDOW_WIDTH/4,WINDOW_WIDTH/2); pp[0][1] = Point(WINDOW_WIDTH/2,WINDOW_WIDTH/4); pp[0][2] = Point(WINDOW_WIDTH,WINDOW_WIDTH/2); pp[0][3] = Point(WINDOW_WIDTH/2,WINDOW_WIDTH); pp[1][0] = Point(0,0); pp[1][1] = Point(WINDOW_WIDTH/2,0); pp[1][2] = Point(0,WINDOW_WIDTH/2); const Point* ppt[1] = {pp[0]}; int npt[] = {4}; fillPoly(img, ppt, npt, 1, Scalar(33,134,45), lineType); ppt[0] = pp[1]; npt[0] = 3; fillPoly(img, ppt, npt, 1, Scalar(133,34,145), lineType); } void DrawLine(Mat img,Point start,Point end){//绘制直线 int thickness = 2; int lingType = 8; line(img, start, end, Scalar(34,122,66), thickness, lingType); } int main(int argc,char** argv){ Mat atomImage = Mat::zeros(WINDOW_WIDTH,WINDOW_WIDTH,CV_8UC3); Mat rookImage = Mat::zeros(WINDOW_WIDTH,WINDOW_WIDTH,CV_8UC3); //绘制椭圆 for(int i = 0;i <= 360;i += 45) DrawEllipse(atomImage,i); //绘制圆形 DrawFilledCircle(atomImage,Point(WINDOW_WIDTH/2,WINDOW_WIDTH/2)); //绘制矩形 rectangle(atomImage,Point(WINDOW_WIDTH/16,WINDOW_WIDTH/16),Point(WINDOW_WIDTH/4,WINDOW_WIDTH/4),Scalar(43,46,44),5,8); imshow("矩形、圆和椭圆",atomImage); //绘制直线 DrawLine(rookImage,Point(0,WINDOW_WIDTH/2),Point(WINDOW_WIDTH,0)); //绘制多边形 DrawPolygon(rookImage); imshow("多边形、直线",rookImage); waitKey(0); return 0; }
相关文章推荐
- 自定义VIEW(学习笔记三)-基本图形的绘制
- 【OpenGL】学习笔记之一 绘制基本图形单元的方法
- webgl学习笔记1--如何绘制一个基本图形
- iOS学习笔记-060.图形的基本绘制、图片水印、图片裁剪
- 【基于C++和Python的Opencv3学习笔记之基本图形的绘制】
- C# 学习笔记二(图形绘制基础2 常用画图对象)
- Direct3D 9学习笔记(3)基本顶点绘制
- 【OpenGL学习代码笔记之一】 基本形状绘制及动画初窥
- 【Visual C++】游戏开发笔记之四――游戏画面绘图(一)基本图形绘制
- 【Visual C++】游戏开发笔记之四——游戏画面绘图(一)基本图形绘制
- WPF and Silverlight 学习笔记(二十六):基本图形使用(1)
- 【原创】XNA 4.0学习笔记之-绘制基元图形的几种PrimitiveType区别[PS:4.0似乎有所改动]
- D3D学习笔记之四---使用索引缓冲区绘制图形
- C# 学习笔记一(图形绘制基础1 GDI+)
- 【Visual C++】游戏开发笔记之四——游戏画面绘图(一)基本图形绘制
- Direct3D 9学习笔记(4)基本顶点绘制呈现
- WPF and Silverlight 学习笔记(二十七):基本图形的使用(2)Path和位图操作
- 【Visual C++】游戏开发笔记之四——游戏画面绘图(一)基本图形绘制
- WPF and Silverlight 学习笔记(二十八):基本图形的使用(3)图形的操作
- cocos2d-x学习笔记03:绘制基本图元