OpenCV Mat的数据类型

OpenCV Mat的数据类型

  • Mat
  • type类型
  • 内存拷贝
  • 简单实现

Mat

Mat类(Matrix的缩写)是OpenCV用于处理图像而引入的-一个封装类。他是一个自动内存管理工具。
Mat:本质上是由两个数据部分组成的类:(包含信息有矩阵的大小,用于存储的方法,矩阵存储的地址等)矩阵头和一个指针,指向包含了像素值的矩阵(可根据选.择用于存储的方法采用任何维度存储数据)。矩阵头部的大小是恒定的。然而,矩.阵本身的大小因图像的不同而不同,通常是较大的数量级图像矩阵比较耗时
构造Mat对象相当于构造了一个矩阵(数组),需要四个基本要素:行数、列数、通道数以及数据类型,所以Mat类的构造函数如下:
Mat(int rows, int cols, int type)
Mat(Size(int cols, int rows), int type )// Size 是矩阵的行、列数

在这里插入图片描述

type类型

在这里插入图片描述
表头的 C1, C2, C3, C4 指的是通道(Channel)数,比如灰度图像只有 1 个通道,是 C1;JPEG格式 的 RGB 彩色图像就是 3 个通道,是 C3;PNG 格式的彩色图像除了 RGB 3个通道外,还有一个透明度通道,所以是 C4

内存拷贝

Mat类也分为深浅拷贝,与c++的深拷贝和浅拷贝类似,mat浅拷贝会复制头信息,但是像素矩阵是共用的,深拷贝会重新开辟一个新的空间用于像素矩阵的存储

简单实现

     Mat img=imread(path.toStdString());imshow("img",img);QImage im(img.data,img.cols,img.rows,QImage::Format_RGB888);   this->ui->label_image_before->setPixmap(QPixmap::fromImage(im));

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/384364.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

C++指向成员函数的指针

转载:http://www.cnblogs.com/tracylee/archive/2012/11/15/2772176.html C指向函数的指针定义方式为: 返回类型 (*指针名)(函数参数列表),例如 void (*p)(in…

OpenCV基础知识 图像

OpenCV基础知识 图像位图模式灰度模式RGB模式位图模式 位图模式是是1位深度的图像,只有黑和白两种颜色。它可以由扫描或置入黑色的矢量线条图像生成,也能由灰度模式转换而成。其他图像模式不能直接转换为位图模式。 灰度模式 灰度模式是8位的图像&…

C++中引用与指针的区别(详细介绍)

转载:http://www.cnblogs.com/tracylee/archive/2012/12/04/2801519.html C++中的引用与指针的区别指向不同类型的指针的区别在于指针类型可以知道编译器解释某个特定地址(指针指向的地址)中的内存内容及大小&#xff…

mysql远程连接权限grant all privileges on *.* to ‘root‘@‘%‘ identified by ‘123456‘ with grant option语句报错

mysql远程连接权限grant all privileges on *.* to ‘root‘‘%‘ identified by ‘123456‘ with grant option语句报错记录一下自己安装mysql遇到的小坑grant all privileges on *.* to ‘root‘‘%‘ identified by ‘123456‘ with grant option只适用于mysql8.0之前的版本…

C++虚继承的概念

转载:http://blog.csdn.net/crystal_avast/article/details/7678704 C中虚拟继承的概念 为了解决从不同途径继承来的同名的数据成员在内存中有不同的拷贝造成数据不一致问题,将共同基类设置为虚基类。这时从不同的路径继承过来的同名数据成员在内存中就只…

数组名和取数组名的区别

先来个简单的小案例 #include <stdio.h> #include <iostream>using namespace std;int main() {int a[10] { 0 };printf("%d\n", a);printf("%d\n", &a);printf("%d\n", a1);printf("%d\n", &a1);printf("…

C++继承详解三 ----菱形继承、虚继承

转载&#xff1a;http://blog.csdn.net/pg_dog/article/details/70175488 今天呢&#xff0c;我们来讲讲菱形继承与虚继承。这两者的讲解是分不开的&#xff0c;要想深入了解菱形继承&#xff0c;你是绕不开虚继承这一点的。它俩有着什么关系呢&#xff1f;值得我们来剖析。 菱…

Linux :IO多路复用模型

转载&#xff1a;http://blog.csdn.net/mr253727942/article/details/50827127 一、IO多路复用定义 IO多路复用允许应用在多个文件描述符上阻塞&#xff0c;并在某一个可以读写时通知&#xff0c; 一般遵循下面的设计原则&#xff1a;、 IO多路复用&#xff1a;任何文件描述符…

leetcode(一)刷题两数之和

给定一个整数数组 nums 和一个整数目标值 target&#xff0c;请你在该数组中找出 和为目标值 target 的那 两个 整数&#xff0c;并返回它们的数组下标。 示例 1&#xff1a; 输入&#xff1a;nums [2,7,11,15], target 9 输出&#xff1a;[0,1] 解释&#xff1a;因为 nums[…

Linux并发服务器编程之多线程并发服务器

转载&#xff1a;http://blog.csdn.net/qq_29227939/article/details/53782198 上一篇文章使用fork函数实现了多进程并发服务器&#xff0c;但是也提到了一些问题&#xff1a; fork是昂贵的。fork时需要复制父进程的所有资源&#xff0c;包括内存映象、描述字等&#xff1b;目…

leetcode(二)二分法查找算法

给定一个 n 个元素有序的&#xff08;升序&#xff09;整型数组 nums 和一个目标值 target &#xff0c;写一个函数搜索 nums 中的 target&#xff0c;如果目标值存在返回下标&#xff0c;否则返回 -1。 示例 1: 输入: nums [-1,0,3,5,9,12], target 9 输出: 4 解释: 9 出现在…

leetcode(977)有序数组的平方

给你一个按 非递减顺序 排序的整数数组 nums&#xff0c;返回 每个数字的平方 组成的新数组&#xff0c;要求也按 非递减顺序 排序。 示例 1&#xff1a; 输入&#xff1a;nums [-4,-1,0,3,10] 输出&#xff1a;[0,1,9,16,100] 解释&#xff1a;平方后&#xff0c;数组变为 […

IO多路复用之select全面总结(必看篇)

转载&#xff1a;http://www.jb51.net/article/101057.htm 1、基本概念 IO多路复用是指内核一旦发现进程指定的一个或者多个IO条件准备读取&#xff0c;它就通知该进程。IO多路复用适用如下场合&#xff1a; &#xff08;1&#xff09;当客户处理多个描述字时&#xff08;一般…

leetcode(189) 旋转数组

**给定一个数组&#xff0c;将数组中的元素向右移动 k 个位置&#xff0c;其中 k 是非负数。 进阶&#xff1a; 尽可能想出更多的解决方案&#xff0c;至少有三种不同的方法可以解决这个问题。 你可以使用空间复杂度为 O(1) 的 原地 算法解决这个问题吗&#xff1f; 示例 1: …

I/O 多路复用之select

转载&#xff1a;http://blog.csdn.net/u012432778/article/details/47347133 概述 Linux提供了三种 I/O 多路复用方案&#xff1a;select&#xff0c;poll和epoll。在这一篇博客里先讨论select, poll 在将下一篇中介绍&#xff0c;epoll是Linux特有的高级解决方案&#xff0c;…

leetcode(283)移动零

283. 移动零 给定一个数组 nums&#xff0c;编写一个函数将所有 0 移动到数组的末尾&#xff0c;同时保持非零元素的相对顺序。 示例: 输入: [0,1,0,3,12] 输出: [1,3,12,0,0] 说明: 必须在原数组上操作&#xff0c;不能拷贝额外的数组。 尽量减少操作次数。 方法一&#xff1…

exec函数族实例解析

转载&#xff1a;http://www.cnblogs.com/blankqdb/archive/2012/08/23/2652386.html fork()函数通过系统调用创建一个与原来进程(父进程)几乎完全相同的进程(子进程是父进程的副本&#xff0c;它将获得父进程数据空间、堆、栈等资源的副本。注意&#xff0c;子进程持有的是上述…

leetcode(167)两数之和 II - 输入有序数组

两数之和 II - 输入有序数组 给定一个已按照 升序排列 的整数数组 numbers &#xff0c;请你从数组中找出两个数满足相加之和等于目标数 target 。 函数应该以长度为 2 的整数数组的形式返回这两个数的下标值。numbers 的下标 从 1 开始计数 &#xff0c;所以答案数组应当满足 …

常量指针与指针常量的区别(转帖)

转载&#xff1a;http://www.cnblogs.com/witty/archive/2012/04/06/2435311.html 三个名词虽然非常绕嘴&#xff0c;不过说的非常准确。用中国话的语义分析就可以很方便地把三个概念区分开。 一) 常量指针。 常量是形容词&#xff0c;指针是名词&#xff0c;以指针为中心的一个…

c/c++错题总结

1.类名 对象名 默认调用“对象名()”这个构造函数&#xff0c;在栈内存中存在对象名&#xff0c;在堆内存中存在实际对象&#xff1b; 2.类名 对象名(一个或以上个参数) 默认调用相应的构造函数&#xff0c;在栈内存中存在对象名&#xff0c;在堆内存中也是存在实际对象的&a…