OpenCV (iOS)基本绘图(5)

函数介绍

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 学习笔记(四)—— 基本绘图

基本绘图

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,029评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,395评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,570评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,535评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,650评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,850评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,006评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,747评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,207评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,536评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,683评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,342评论 4 330
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,964评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,772评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,004评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,401评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,566评论 2 349

推荐阅读更多精彩内容