Mat是一个类,由两个数据部分组成:局枕头(包含矩阵尺寸、存储方法、存储地址等信息)和一个指向存储所有像素值的矩阵(根据所选存储方法的不同,矩阵可以是不同的维数)的指针。
Mat初始化方法
Mat m(行数,列数,类型,颜色)
其中类型CV_8UC3表示8位无符号字符型3通道,颜色例如Scalar(0,100,255),表示的是RGB值

#include<iostream>
#include<opencv2/opencv.hpp>
#include"opencv2/highgui/highgui.hpp"
using namespace cv;
using namespace std;int main()
{Mat img1(1, 5, CV_8UC1, Scalar(1));Mat img2(1, 5, CV_8UC1, Scalar(2));Mat img3(1, 5, CV_8UC1, Scalar(3));cout << img1 << endl << img2 << endl << img3 << endl;cout << endl;img3.copyTo(img1);//把img3赋值到img1cout << "copyto结果" << endl << img1 << endl << img2 << endl << img3 << endl;return 0;
}

#include<iostream>
#include<opencv2/opencv.hpp>
#include"opencv2/highgui/highgui.hpp"
using namespace cv;
using namespace std;int main()
{Mat img1(1,5,CV_8UC1,Scalar(1));Mat img2(1, 5, CV_8UC1, Scalar(0));Mat img3(1, 5, CV_8UC1, Scalar(0));img1 = img3.clone();cout << img1 << endl;cout << img2 << endl;return 0;
}

点的表示:Point类

Point p;
p.x=10;
p.y=8;

或者

Point p=Point(10,8);

颜色的表示:Scalar类

Scalar(R,G,B)

尺寸的表示:Size类

暂不清楚

矩形的表示:Rect类

Rect类的成员变量有x、y、width、height,分别意义为左上角点的坐标和矩形的宽高。
常用的成员函数有:
Size(),返回值为Size
area(),返回值为晶=矩形的面积
contains(Point),判断点是否在矩形内。是就返回1
inside(Rect),判断矩形是否在该矩形内
tl(),top left,返回左上角点坐标
br(),bottom right,返回右下角点坐标

矩形的交集:Rect rect=rect1 & rect2
矩形的并集:Rect rect=rect1 | rect2

矩形的平移:Rect rectshift = rect + point
矩形的缩放:Rect rectScale = rect + size

#include<iostream>
#include<opencv2/opencv.hpp>
#include"opencv2/highgui/highgui.hpp"
using namespace cv;
using namespace std;int main()
{Rect r = Rect(100, 50, 50,100);Point p = Point(120, 120);cout << r.size() << endl;//尺寸cout << r.area() << endl;//面积cout << r.contains(p) << endl;//点是否在矩形内cout << r.tl() << endl;//左上点cout << r.br() << endl;//右下点
}


画椭圆(弧线)

函数ellipse用法
ellipse(图像,中心点坐标,宽高,弧线顺时针旋转度数,弧线顺时针起点度数(从x正半轴转),弧线终点度数,线颜色,厚度,线型)

#include<iostream>
#include<opencv2/opencv.hpp>#define WINDOW_WIDTH 600using namespace cv;
using namespace std;//绘制椭圆
void DrawEllipse(Mat img, double angle)
{int thickhness = 2;int lineType = 8;ellipse(img,Point(WINDOW_WIDTH / 2, WINDOW_WIDTH / 2),Size(WINDOW_WIDTH / 2, WINDOW_WIDTH / 4),angle,0, 300,Scalar(255, 129, 0),thickhness,lineType);
}int main()
{Mat img(WINDOW_WIDTH,WINDOW_WIDTH,CV_8UC3,Scalar(255,255,255));//初始化画布DrawEllipse(img, 22);imshow("1", img);waitKey(0);
}


特别地:当把线的厚度thickness改为-1以后,是这样的


画圆

函数circle用法
circle(图像,中心点坐标,半径,颜色,厚度,线型)

#include<iostream>
#include<opencv2/opencv.hpp>#define WINDOW_WIDTH 600using namespace cv;
using namespace std;void DrawEllipse(Mat img, Point center)
{int thickhness = 2;int lineType = 8;circle(img,center,WINDOW_WIDTH / 5,Scalar(0, 0, 255),thickhness,lineType);
}int main()
{Mat img(WINDOW_WIDTH,WINDOW_WIDTH,CV_8UC3,Scalar(255,255,255));//初始化画布DrawEllipse(img, Point(WINDOW_WIDTH/2, WINDOW_WIDTH/2));imshow("1", img);waitKey(0);
}


特别地,把厚度thickness改为-1后,就变成实心圆


#include<iostream>
#include<opencv2/opencv.hpp>#define WINDOW_WIDTH 600using namespace cv;
using namespace std;void DrawLine(Mat img, Point start,Point end)
{int thickhness = 2;int lineType = 8;line(img,start,end,Scalar(0, 0, 255),thickhness,lineType);
}int main()
{Mat img(WINDOW_WIDTH,WINDOW_WIDTH,CV_8UC3,Scalar(255,255,255));//初始化画布DrawLine(img, Point(WINDOW_WIDTH/8, WINDOW_WIDTH/8), Point(WINDOW_WIDTH / 2, WINDOW_WIDTH /2));imshow("1", img);waitKey(0);
}

opencv3——常用类及常用图形的画法相关推荐

  1. IOS UI Automation 学习之常用类,方法和模拟手势

    为什么80%的码农都做不了架构师?>>>    IOS UI Automation 学习之常用类,方法和模拟手势 常用类结构图 作者不擅长作画,如果有好的画此类图形的工具,可以留言, ...

  2. 「JavaSE」- 常用类

    常用类 Object类 Object是所有类的父类,任何类都默认继承Object.理论上Object类是所有类的父类,即直接或间接的继承java.lang.Object类.由于所有的类都继承在Obje ...

  3. Java高级编程之常用类

    一.String类 java.lang.String类的使用 (一)概述 String: 字符串,使用一对""引起来表示. String声明为final的,不可被继承 String ...

  4. Java自学基础 常用类

    Java常用类 一.字符串相关的类 String的特性 String对象的创建 String str1 = "abc";与String str2 = new String(&quo ...

  5. Java常用类全面解析(含部分源码)

    常用类 文章目录 常用类 字符串相关的类 String 类 说明 案例 String 的实例方式 String 中的常用方法 案例一 案例二 案例三 String 类与其它结构之间的转换 小复习-与基 ...

  6. 重学JavaSE 第11章 : 常用类API、String、日期API、比较器、BigDecimal、System等

    文章目录 一.字符串相关的类 1.1.String类的概述 1.2.理解String的不可变性 1.3.String不同实例化方式的对比 1.4.String不同拼接操作的对比 1.4.1.Strin ...

  7. 第八章笔记 Java常用类

    第八章笔记 Java常用类 文章目录 第八章笔记 Java常用类 第一节 Java类库概述 Java类库文档 Java类库列表 第二节 数字相关类 Java数字类 大数字类 随机数类 数字工具类 第三 ...

  8. Java高级--Java常用类

    Java常用类 字符串相关的类 String String的实例化方式 String常用方法 String与字符数组转换 字符数组--->字符串 字符串--->字符数组 String与字节 ...

  9. JavaEE基础第9章Java常用类

    第9章Java常用类 字面量的定义方式都是存在常量池中的,常量池中不会存储多个一样的字符串,在定义一个字符串的时候会先去常量池中找有没有存在的,有就将地址传过去,没有就新建. String字符串 概念 ...

最新文章

  1. 20155227《网络对抗》Exp5 MSF基础应用
  2. Educational Codeforces Round 88 D. Yet Another Yet Another Task(巧枚举)
  3. hibernate示例_通过示例Hibernate–第1部分(删除孤儿)
  4. 《leetcode : 647. 回文子串 思考分析双指针解法》
  5. 【优秀文章保存】webcollector抽取新闻正文
  6. linux 编程头文件搜索规则
  7. 请允许我用2019年11种主流编程语言,祝祖国70华诞快乐!
  8. Leetcode每日一题:107.binary-tree-level-order-traversal-ii(二叉树的层次遍历)
  9. CCF201709-1 打酱油(100分)【水题】
  10. Mac 下如保查看二进制文件,比如.heic文件
  11. qca956x flash usb
  12. mysql打开数据表命令是_MySQL数据库命令大全
  13. 用 Go 手写一个 JSON 序列化器
  14. Win10文件或目录损坏且无法读取修复方法
  15. 抛光树脂制备超纯水电阻率18.25M
  16. 记go语言椭圆曲线算法公私钥验证补充
  17. 多说最近访客通用代码使用方法
  18. 机器学习实战——PCA降维
  19. Android 环信即时通讯集成
  20. @Target、@Retenrion注解

热门文章

  1. IIC协议初识及OLED写入指令、数据和显示的代码实现
  2. html有哪些好玩的地方,古田县十大旅游景点 古田有哪些好玩的地方?
  3. 网络优化(六)——超参数优化
  4. 领域驱动开发(domain driven development)
  5. TableLayout 的collapseColumns、shrinkColumns、stretchColumns
  6. linux(centos)之useradd命令
  7. RFID机场推车电子标签的使用-RFID机场手推车资产管理追踪解决方案-新导智能
  8. 小学计算机室管理总结,小学信息技术工作总结
  9. 【CSS进阶】黑马程序员web前端开发入门(四)视频笔记
  10. TCP CheckSum 计算