一、Mat类创建

    Mat img;//创建无初始化矩阵
Mat img1(,,CV_8UC1);//200行,100列(长200,宽100)
Mat img2(Size(,),CV_8UC3,Scalar(,,));//长100,宽200
Mat img3(,,CV_8UC3,Scalar(,,));//创建200行,100列的8位三通道矩阵
Mat img4(,,CV_8UC1,Scalar());//创建单通道矩阵

 #include <opencv2/opencv.hpp>
using namespace cv; void main(){
Mat img1=imread("E://1.jpg");
Mat img2(img1);
Mat img3=img1;
Mat img4=img1.clone();
Mat img5;
img1.copyTo(img5); cvtColor(img1,img1,CV_BGR2HSV);//BGR图转为HSV图
imshow("img1",img1);
imshow("img2",img2);
imshow("img3",img3);//image1/2/3跟随原图变化
imshow("img4",img4);
imshow("img5",img5);//image4/5不会跟随原图变化
waitKey();
}

二、基本绘图函数

1、画线、画圆、画矩形

 #include <opencv2/opencv.hpp>
using namespace cv; void main(){
Mat img(,,CV_8UC3,Scalar(,,));//创建一个500行400列,3通道(即彩色图)的白色图
line(img,Point(,),Point(,),Scalar(,,),,);//在img图中画一条黄线,线宽为20,线型为8联通(一般都设置为8)
circle(img,Point(,),,Scalar(,,),,); //以(200,100)为圆心,半径为50,线宽为15画空心圆
circle(img,Point(,),,Scalar(,,),-,); //设置为-1时,画实心圆
rectangle(img,Point(,),Point(,),Scalar(,,),,); //传入坐上、右下角坐标,画空心矩形
rectangle(img,Rect(,,,),Scalar(,,),-,); //传矩形数据(左上角坐标(200,300)和宽100,高50),画实心绿色矩形 imshow("drawing",img);
waitKey();
}

2、画椭圆、画多边形、写入文字

 #include <opencv2/opencv.hpp>
using namespace cv; void main(){
Mat img(,,CV_8UC3,Scalar(,,));
ellipse(img,Point(,),Size(,),,,,Scalar(,,),,); //画椭圆,(200,200)为中点,15旋转角度,0~360度,长轴180,短轴80
ellipse(img,RotatedRect(Point(,),Size(,),),Scalar(,,),-,); //画椭圆,40旋转角度 Point ppt[]={Point(,),Point(,),Point(,),Point(,),Point(,),Point(,)};
Point ppt2[]={Point(,),Point(,),Point(,),Point(,)};//定义点集
const Point* pts[]={ppt};
const Point* pts2[]={ppt2};
int npt[]={};
int npt2[]={};
fillPoly(img,pts,npt,,Scalar(,,),); //画填充多边形
polylines(img,pts2,npt2,,false,Scalar(,,),,); //画多边形,false为不闭合,true为闭合 putText(img,"China",Point(,),CV_FONT_BLACK,,Scalar(,,),,);//写入文字 imshow("drawing",img);
waitKey();
}

opencv学习之路(4)、Mat类介绍,基本绘图函数的更多相关文章

  1. springboot 学习之路 2(注解介绍)

    目录:[持续更新.....] spring 部分常用注解 spring boot 学习之路1(简单入门) spring boot 学习之路2(注解介绍) spring boot 学习之路3( 集成my ...

  2. VS2010/MFC编程入门之四十九(图形图像:CDC类及其屏幕绘图函数)

    上一节中鸡啄米讲了文本输出的知识,本节的主要内容是CDC类及其屏幕绘图函数. CDC类简介 CDC类是一个设备上下文类. CDC类提供了用来处理显示器或打印机等设备上下文的成员函数,还有处理与窗口客户 ...

  3. VS2010-MFC(图形图像:CDC类及其屏幕绘图函数)

    转自:http://www.jizhuomi.com/software/244.html 上一节讲了文本输出的知识,本节的主要内容是CDC类及其屏幕绘图函数. CDC类简介 CDC类是一个设备上下文类 ...

  4. opencv中mat类介绍

    The class Mat represents an n-dimensional dense numerical single-channel or multi-channel array. It ...

  5. OpenCV 学习之路(2) -- 操作像素

    本节内容: 访问像素值 用指针扫描图像 用迭代器扫描图像 编写高效的图像扫描循环 扫描图像并访问相邻像素 实现简单的图像运算 图像重映射 访问像素值 准备工作: 创建一个简单函数,用它在图像中加入椒盐 ...

  6. opencv学习之路(17)、边缘检测

    一.概述 二.canny边缘检测 #include "opencv2/opencv.hpp" using namespace cv; void main() { //Canny边缘 ...

  7. opencv学习之路(13)、图像阈值化threshold

    一.图像阈值化简介 二.固定阈值 三.自适应阈值 #include<opencv2/opencv.hpp> using namespace cv; void main(){ Mat src ...

  8. opencv学习之路(12)、图像滤波

    一.图像滤波简介 二.方框滤波——boxFilter() #include<opencv2/opencv.hpp> using namespace cv; void main(){ Mat ...

  9. 【C++学习之路】派生类的构造函数(三)

    三.多层继承的派生类 1.多层继承的派生类只需在构造函数的初始化列表中写出直接基类的构造函数即可 class student { public: student(int n, string nam) ...

随机推荐

  1. android获取通讯记录,sim卡和手机

    //获取手机和手机卡通讯录 public static String getContacts() { String szContacts = ""; szContacts=getP ...

  2. ubuntu 安装/卸载nginx及常用命令

    安装命令 sudo apt-get update #更新apt sudo apt-get install nginx #安装nginx 启动/重启/停止命令 一. /etc/init.d/nginx ...

  3. Unity shader学习之阴影,衰减统一处理

    使用unity AutoLight.cginc文件里的内置函数 UNITY_LIGHT_ATTENUATION shader如下: // Upgrade NOTE: replaced 'mul(UNI ...

  4. python之小数据池

    代码块 Python 程序 是由代码块构造的.块是一个python程序的文本,它是作为一个执行单元的. 代码块:一个模块,一个函数,一个类,一个文件等都是一个代码块. 而作为交互方式输入的每个命令都是 ...

  5. 怎么查 ODBC Driver for SQL Server

    1)进入服务器,找到SQL Server 2016 Configuration... ,点进去就好了 2)

  6. tomcat查看并修改jvm大小

    JVM--Java Virtual Machine,Java虚拟机:tomcat不是直接运行在物理操作系统上,而是运行在Java虚拟机上,通常说的配置jvm就是配置分配给Java虚拟机的内存大小: 如 ...

  7. Python中*args和**kwargs 的简单使用

    # 在函数定义中使用*args和kwargs传递可变长参数. *args用作传递非命名键值可变长参数列表(位置参数); kwargs用作传递键值可变长参数列表# *args表示任何多个无名参数,它是一 ...

  8. oracle 如何将一个字段内容拆分多行显示

    例子: select regexp_substr('1,2,3,4,5', '[^,]+', 1, level)from dualconnect by level <= regexp_count ...

  9. linux系统电视盒子到底是什么

    经常看到各种大神说今天刷了什么linux系统可以干嘛干嘛了,刷了乌班图可以干嘛干嘛了,但是身为一个小白,对这种名词都是一知半解.所以这边给大家科普一下,什么是linux系统?电视盒子刷了这个可以干啥? ...

  10. 怎样从外网访问内网微服务Microservices?

    本地部署了一个微服务,只能在局域网内访问,怎样从外网也能访问到本地的微服务呢?本文将介绍具体的实现步骤. 准备工作 部署并启动微服务程序 默认部署的微服务端口是8088. 实现步骤 下载并解压hole ...