opencv3——常用类及常用图形的画法
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——常用类及常用图形的画法相关推荐
- IOS UI Automation 学习之常用类,方法和模拟手势
为什么80%的码农都做不了架构师?>>> IOS UI Automation 学习之常用类,方法和模拟手势 常用类结构图 作者不擅长作画,如果有好的画此类图形的工具,可以留言, ...
- 「JavaSE」- 常用类
常用类 Object类 Object是所有类的父类,任何类都默认继承Object.理论上Object类是所有类的父类,即直接或间接的继承java.lang.Object类.由于所有的类都继承在Obje ...
- Java高级编程之常用类
一.String类 java.lang.String类的使用 (一)概述 String: 字符串,使用一对""引起来表示. String声明为final的,不可被继承 String ...
- Java自学基础 常用类
Java常用类 一.字符串相关的类 String的特性 String对象的创建 String str1 = "abc";与String str2 = new String(&quo ...
- Java常用类全面解析(含部分源码)
常用类 文章目录 常用类 字符串相关的类 String 类 说明 案例 String 的实例方式 String 中的常用方法 案例一 案例二 案例三 String 类与其它结构之间的转换 小复习-与基 ...
- 重学JavaSE 第11章 : 常用类API、String、日期API、比较器、BigDecimal、System等
文章目录 一.字符串相关的类 1.1.String类的概述 1.2.理解String的不可变性 1.3.String不同实例化方式的对比 1.4.String不同拼接操作的对比 1.4.1.Strin ...
- 第八章笔记 Java常用类
第八章笔记 Java常用类 文章目录 第八章笔记 Java常用类 第一节 Java类库概述 Java类库文档 Java类库列表 第二节 数字相关类 Java数字类 大数字类 随机数类 数字工具类 第三 ...
- Java高级--Java常用类
Java常用类 字符串相关的类 String String的实例化方式 String常用方法 String与字符数组转换 字符数组--->字符串 字符串--->字符数组 String与字节 ...
- JavaEE基础第9章Java常用类
第9章Java常用类 字面量的定义方式都是存在常量池中的,常量池中不会存储多个一样的字符串,在定义一个字符串的时候会先去常量池中找有没有存在的,有就将地址传过去,没有就新建. String字符串 概念 ...
最新文章
- 20155227《网络对抗》Exp5 MSF基础应用
- Educational Codeforces Round 88 D. Yet Another Yet Another Task(巧枚举)
- hibernate示例_通过示例Hibernate–第1部分(删除孤儿)
- 《leetcode : 647. 回文子串 思考分析双指针解法》
- 【优秀文章保存】webcollector抽取新闻正文
- linux 编程头文件搜索规则
- 请允许我用2019年11种主流编程语言,祝祖国70华诞快乐!
- Leetcode每日一题:107.binary-tree-level-order-traversal-ii(二叉树的层次遍历)
- CCF201709-1 打酱油(100分)【水题】
- Mac 下如保查看二进制文件,比如.heic文件
- qca956x flash usb
- mysql打开数据表命令是_MySQL数据库命令大全
- 用 Go 手写一个 JSON 序列化器
- Win10文件或目录损坏且无法读取修复方法
- 抛光树脂制备超纯水电阻率18.25M
- 记go语言椭圆曲线算法公私钥验证补充
- 多说最近访客通用代码使用方法
- 机器学习实战——PCA降维
- Android 环信即时通讯集成
- @Target、@Retenrion注解
热门文章
- IIC协议初识及OLED写入指令、数据和显示的代码实现
- html有哪些好玩的地方,古田县十大旅游景点 古田有哪些好玩的地方?
- 网络优化(六)——超参数优化
- 领域驱动开发(domain driven development)
- TableLayout 的collapseColumns、shrinkColumns、stretchColumns
- linux(centos)之useradd命令
- RFID机场推车电子标签的使用-RFID机场手推车资产管理追踪解决方案-新导智能
- 小学计算机室管理总结,小学信息技术工作总结
- 【CSS进阶】黑马程序员web前端开发入门(四)视频笔记
- TCP CheckSum 计算