美文网首页
OpenCV (iOS)基本绘图(5)

OpenCV (iOS)基本绘图(5)

作者: 傻傻小萝卜 | 来源:发表于2017-05-03 14:25 被阅读157次

    函数介绍

    Point可定义2D点

    Scalar表示了具有4个元素的数组。在OpenCV中被大量用于传递像素值。

    line绘制直线

    ellipse绘制椭圆

    rectangle绘制矩形

    circle绘制圆

    fillPoly绘制填充多边形

    Point

    次数结构表示了由其图像坐标x和y指定2D点,可表示为:

    cv::Point pt;//此处必须使用cv::Point, 就算在引入头文件下方加入了using namespace cv;也不行

    pt.x = 10;

    pt.y = 10;

    或者是

    cv::Point point= cv::Point(8,10);

    Scalar

    表示了具有四个元素的数组。此类型在OpenCV中被大量用于传递像素值,第四个参数可以忽略

    Scalar(r, g, b);

    RGB颜色值就为: Red = r; Green = g; Blue = b;

    (OpenCV默认颜色值与RGB相反 ----> BGR,但是在OC上已经被改为RGB)

    创建一个空的全黑像素的空图像

    Mat bamboo_dragonfly_image= Mat::zeros(w, w, CV_8SC3);

    Line

    cv::Point pLine1 = cv::Point(10,400);// 起始点

    cv::Point pLine2 = cv::Point(300,400);// 终点

    int line_thickness = 2;// 线粗

    int line_lineType = 8;// 线形

    //    cv::line(bamboo_dragonfly_image, pLine1, pLine2, Scalar(100,0,255));

    cv:: line(bamboo_dragonfly_image,// 同理这里首先得创建一个 Mat 空图像

                pLine1,// 起始点

                pLine2,// 终点

                Scalar(100,0,255),// 颜色

              line_thickness,// 线粗

              line_lineType,// 线形

               0);

    ellipse

    cv::Point p1 = cv::Point(100,250);

    cv::Size s1 = cv::Size(80,30);

    cv::ellipse(bamboo_dragonfly_image, p1, s1,

    0, 0, 360,

    Scalar(255,255,0), -1,

    LINE_8,  0);

    ellipse的参数

                ellipse(InputOutputArray img,      // 我们创建的 Mat 空图像(表示将圆加到图像上面)

                 Point center,// 椭圆圆心所在坐标

                 Size axes,// 椭圆的 “长轴” 和 “短轴”

                   double angle,// 椭圆旋转角度

                    double startAngle,// 椭圆扩展的弧度 开始

                   double    endAngle,// 椭圆扩展的弧度 结束 (通过控制这里的两个Angle,可以绘制弧线)

                    const Scalar &color,// 椭圆颜色

                     int thickness =1,// 线粗(-1将被填充)

                      int lineType = LINE_8,// 线形

                      int shift =0// 上述椭圆中代码省略了该参数)

    rectangle

    int rectangle_thickness = -1;

    int rectangle_lineType = 8;

    cv::Point p1 = cv::Point(100,250);

    cv::Point p3 = cv::Point(280,300);

    cv::rectangle(bamboo_dragonfly_image, p1, p3, Scalar(0,255,255),rectangle_thickness,rectangle_lineType);

    rectangle的参数

    rectangle(InputOutputArray img,// 我们创建的 Mat 空图像(表示将圆加到图像上面)

                 Point pt1,// 起始点(我取的是矩形左上角的点)

                  Point pt2,// 终点(我取的是右下角的点)这里两个点(起始点,终点)取矩形对角的形势,确定对角,便确定了矩形的长宽。

                   const Scalar &color,// 颜色

                   int thickness =1,//  线粗(-1将被填充)

                    int lineType = LINE_8,// 线形

                     int shift =0)// 上述矩形代码中省略了该参数

    circle

    int circle_thickness = -1;

    int circle_lineType = 8;

    double w = 50;

    cv::Point point = cv::Point(100,100);

    cv::circle(bamboo_dragonfly_image, point, w,Scalar(0,0,255),circle_thickness,circle_lineType);

    circle的参数

    circle(InputOutputArray img,// 我们创建的 Mat 空图像(表示将圆加到图像上面)

             Point center,// 圆心所在坐标

             int radius,// 圆的半径

             const Scalar& color,// 圆的颜色

            int thickness =1,// 线粗(-1将被填充)

              int lineType = LINE_8,// 线形

              int shift =0// 我也不知道干啥的,可省略)

    fillPoly

    绘制三角形

    /** 创建三角形三个顶点 用矩阵的形式创建 */

    cv::Point rook_points[1][3];

    rook_points[0][0] = cv::Point(100,400);

    rook_points[0][1] = cv::Point(50,450);

    rook_points[0][2] = cv::Point(150,450);

    /** 创建三角形顶点集合 */

    const cv::Point* ppt[1] = {rook_points[0]};

    /** 三角形顶点数目 */

    int npt[] = {3};

    cv::fillPoly(bamboo_dragonfly_image, // 将三角形放到图像上

                      ppt,                                      //三角形顶点集合

                      npt,                                    // 三角形顶点数量

                      1,                                      // 绘制的数量

                        Scalar(255,0,255));    // 三角形填充颜色

    最后 我们需将 Mat 图像转换成 UIImage 对象

    imagView1.image = MatToUIImage(bamboo_dragonfly_image);

    实现的效果

    参考博客

    OpenCV for iOS 学习笔记(四)—— 基本绘图

    基本绘图

    相关文章

      网友评论

          本文标题:OpenCV (iOS)基本绘图(5)

          本文链接:https://www.haomeiwen.com/subject/rjlktxtx.html