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.pswp.cn/news/384364.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/384364.shtml
英文地址,請注明出處:http://en.pswp.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…