中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

發布時間:2022-02-04 09:01:53 來源:億速云 閱讀:149 作者:柒染 欄目:開發技術

這篇文章主要為大家分析了Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的的相關知識點,內容詳細易懂,操作細節合理,具有一定參考價值。如果感興趣的話,不妨跟著跟隨小編一起來看看,下面跟著小編一起深入學習“Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的”的知識吧。

一、Mat基本結構

1、Mat不但是一個非常有用的圖像容器類,同時也是一個通用的矩陣類,它mat分為頭部(包括圖像的大小、寬高、類型、通道數等)和數據部分(像素的值的集合)

2、獲取的mat對象賦值給另一個對象時候,相當于把這個指針重新指向原來的數據,實質上還是指向同一個DataBlock。只有在進行克隆或者拷貝的時候,才會把這個Mat中所有的數據復制一份供你使用。Mat基本結構如圖所示。

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

 補充:

1、數據部分主要包含圖像的像素數據,各個像素點的像素值。若單通道,每個像素點只有一個值;若三通道,每個像素點有三個值。

2、Mat 對象的創建有多種方式:克隆、復制、賦值、構造函數。速度從快到慢:構造函數、賦值、復制、克隆

賦值法:賦值產生的對象與原賦值對象指向同一個內存地址Data Block。(淺拷貝)Copy/clone法:會產生的新內存對象,指向獨立的Data Block。(深拷貝)構造函數:Mat img_constructe(src);//src為圖片源地址

下面主要介紹圖像的克隆及拷貝 

 二、圖像的克隆及拷貝

1、clone函數

Mat img_clone = src.clone();

2、copyTo函數

c++原型:

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

 參數一:OutputArray,目標矩陣(輸出的圖片)。

3、示例

同以前一樣,聲明函數放在test1.h文件里,實現放在test1.cpp文件里

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

在main中測試

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

從下圖可以看出,顯示的兩張圖沒什么區別

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

 三、創建圖像

1、創建空白圖像:

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

 如圖所示

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

 此處zeros的函數原型:

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

  參數一:size,矩陣(圖像)大小。

  參數二:type,圖像類型

OpenCv的源代碼中提到:(_type is CV_8UC1, CV_64FC3, CV_32SC(12) etc.)

CV_8UC1,CV_64FC3是枚舉類型,所以這里的type可以是任何的預定義類型,結構如下:

CV_<bit_depth>(S|U|F)C<number_of_channels>

1、bit_depth-----比特數-----代表8bite,16bites,32bites,64bites
如果你現在創建了一個存儲--灰度圖片的Mat對象,這個圖像的大小為寬100,高100,那么,現在這張灰度圖片中有10000個像素點,它每一個像素點在內存空間所占的空間大小是8bite,8位對應的就是CV_8

 2、S|U|F--S--代表signed int---有符號整形
 U--代表--unsigned int----無符號整形
 F--代表--float---------單精度浮點型

3、C<number_of_channels>----代表一張圖片的通道數,比如:
 1--灰度圖片--grayImg---單通道圖像
 2--RGB彩色圖像---------3通道圖像
 3--帶Alph通道的RGB圖像----4通道圖像

如果不帶通道數的這些類型就是默認通道數為1。

例如,CV_8U就等同于CV_8UC1,CV_32S就等同于CV_32SC1。

 將上述的代碼修改成三通道后:

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

 可以看出原矩陣從8&times;8變為了24&times;8,因為原來是單通道,而現在為3通道,代表著每個像素點包含了3個像素值,可以說明圖像在Mat上面真正的寬度等于通道數乘以Mat定義矩陣的寬度,即3*8=24。

2、創建通道都為1的圖:

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

但是每個通道都為1的圖不能用在三通道上,如圖,結果就是每個像素點的第一個通道為1,其余通道都為0。

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

其實我們也可以對m3賦值,來改變他的第一個通道的值。

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

如果想要每個通道的值都為127,可以通過調用Scalar函數

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

 3、拷貝和賦值的區別

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

3.1用Scalar函數設置m3對象為綠色

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

 3.2m3賦值給m4,m4改為黃色

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

3.3拷貝m3給m4,m4改為黃色

Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的

區別:拷貝不會改變原對象,而賦值則m4一變m3也會隨之改變

關于“Qt+OpenCV聯合開發中圖像的創建與賦值是怎樣的”就介紹到這了,更多相關內容可以搜索億速云以前的文章,希望能夠幫助大家答疑解惑,請多多支持億速云網站!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

乡城县| 江城| 工布江达县| 通州市| 全南县| 营口市| 天镇县| 潞西市| 沙坪坝区| 龙岩市| 涿州市| 桂林市| 丰城市| 县级市| 桐庐县| 秀山| 开鲁县| 桂阳县| 灵丘县| 柘荣县| 三穗县| 忻城县| 安塞县| 白沙| 婺源县| 休宁县| 无为县| 灌云县| 莎车县| 西藏| 武隆县| 仙居县| 侯马市| 于田县| 蒙山县| 松阳县| 泽普县| 崇明县| 凤冈县| 松桃| 西乌珠穆沁旗|