欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

聊聊Qt+OpenCV聯(lián)合開(kāi)發(fā)之圖像的創(chuàng)建與賦值問(wèn)題

 更新時(shí)間:2022年01月27日 16:13:40   作者:hml111666  
這篇文章主要介紹了Qt+OpenCV聯(lián)合開(kāi)發(fā)之圖像的創(chuàng)建與賦值問(wèn)題,給大家介紹了圖像的克隆及拷貝問(wèn)題,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

一、Mat基本結(jié)構(gòu)

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

2、獲取的mat對(duì)象賦值給另一個(gè)對(duì)象時(shí)候,相當(dāng)于把這個(gè)指針重新指向原來(lái)的數(shù)據(jù),實(shí)質(zhì)上還是指向同一個(gè)DataBlock。只有在進(jìn)行克隆或者拷貝的時(shí)候,才會(huì)把這個(gè)Mat中所有的數(shù)據(jù)復(fù)制一份供你使用。Mat基本結(jié)構(gòu)如圖所示。

 補(bǔ)充:

1、數(shù)據(jù)部分主要包含圖像的像素?cái)?shù)據(jù),各個(gè)像素點(diǎn)的像素值。若單通道,每個(gè)像素點(diǎn)只有一個(gè)值;若三通道,每個(gè)像素點(diǎn)有三個(gè)值。

2、Mat 對(duì)象的創(chuàng)建有多種方式:克隆、復(fù)制、賦值、構(gòu)造函數(shù)。速度從快到慢:構(gòu)造函數(shù)、賦值、復(fù)制、克隆

賦值法:賦值產(chǎn)生的對(duì)象與原賦值對(duì)象指向同一個(gè)內(nèi)存地址Data Block。(淺拷貝)Copy/clone法:會(huì)產(chǎn)生的新內(nèi)存對(duì)象,指向獨(dú)立的Data Block。(深拷貝)構(gòu)造函數(shù):Mat img_constructe(src);//src為圖片源地址

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

 二、圖像的克隆及拷貝

1、clone函數(shù)

Mat img_clone = src.clone();

2、copyTo函數(shù)

c++原型:

 參數(shù)一:OutputArray,目標(biāo)矩陣(輸出的圖片)。

3、示例

同以前一樣,聲明函數(shù)放在test1.h文件里,實(shí)現(xiàn)放在test1.cpp文件里

在main中測(cè)試

從下圖可以看出,顯示的兩張圖沒(méi)什么區(qū)別

 三、創(chuàng)建圖像

1、創(chuàng)建空白圖像:

 如圖所示

 此處zeros的函數(shù)原型:

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

  參數(shù)二:type,圖像類型

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

CV_8UC1,CV_64FC3是枚舉類型,所以這里的type可以是任何的預(yù)定義類型,結(jié)構(gòu)如下:

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

1、bit_depth-----比特?cái)?shù)-----代表8bite,16bites,32bites,64bites
如果你現(xiàn)在創(chuàng)建了一個(gè)存儲(chǔ)--灰度圖片的Mat對(duì)象,這個(gè)圖像的大小為寬100,高100,那么,現(xiàn)在這張灰度圖片中有10000個(gè)像素點(diǎn),它每一個(gè)像素點(diǎn)在內(nèi)存空間所占的空間大小是8bite,8位對(duì)應(yīng)的就是CV_8

 2、S|U|F--S--代表signed int---有符號(hào)整形
 U--代表--unsigned int----無(wú)符號(hào)整形
 F--代表--float---------單精度浮點(diǎn)型

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

如果不帶通道數(shù)的這些類型就是默認(rèn)通道數(shù)為1。

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

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

 可以看出原矩陣從8×8變?yōu)榱?4×8,因?yàn)樵瓉?lái)是單通道,而現(xiàn)在為3通道,代表著每個(gè)像素點(diǎn)包含了3個(gè)像素值,可以說(shuō)明圖像在Mat上面真正的寬度等于通道數(shù)乘以Mat定義矩陣的寬度,即3*8=24。

2、創(chuàng)建通道都為1的圖:

但是每個(gè)通道都為1的圖不能用在三通道上,如圖,結(jié)果就是每個(gè)像素點(diǎn)的第一個(gè)通道為1,其余通道都為0。

其實(shí)我們也可以對(duì)m3賦值,來(lái)改變他的第一個(gè)通道的值。

如果想要每個(gè)通道的值都為127,可以通過(guò)調(diào)用Scalar函數(shù)

 3、拷貝和賦值的區(qū)別

3.1用Scalar函數(shù)設(shè)置m3對(duì)象為綠色

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

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

區(qū)別:拷貝不會(huì)改變?cè)瓕?duì)象,而賦值則m4一變m3也會(huì)隨之改變

 原創(chuàng)不易,轉(zhuǎn)載請(qǐng)注明出處:

https://blog.csdn.net/hml111666/article/details/122696593

CV_8UC1,CV_32FC3等參數(shù)的含義參考鏈接:

https://blog.csdn.net/qq_37764129/article/details/82078255

到此這篇關(guān)于Qt+OpenCV聯(lián)合開(kāi)發(fā)之圖像的創(chuàng)建與賦值的文章就介紹到這了,更多相關(guān)Qt+OpenCV聯(lián)合開(kāi)發(fā)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • C語(yǔ)言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)快速排序圖文示例

    C語(yǔ)言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)快速排序圖文示例

    這篇文章主要為大家介紹了C語(yǔ)言植物大戰(zhàn)數(shù)據(jù)結(jié)構(gòu)快速排序圖文示例,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-05-05
  • Matlab繪制花里胡哨的山脊圖

    Matlab繪制花里胡哨的山脊圖

    這篇文章主要介紹了如何利用Matlab實(shí)現(xiàn)繪制一些花里胡哨的山脊圖,文中的示例代碼講解詳細(xì),對(duì)我們學(xué)習(xí)Matlab有一定的幫助,需要的可以參考一下
    2023-02-02
  • C++多重繼承及多態(tài)性原理實(shí)例詳解

    C++多重繼承及多態(tài)性原理實(shí)例詳解

    這篇文章主要介紹了C++多重繼承及多態(tài)性原理實(shí)例詳解,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-07-07
  • Linux線程同步之信號(hào)C語(yǔ)言實(shí)例

    Linux線程同步之信號(hào)C語(yǔ)言實(shí)例

    這篇文章主要介紹了Linux線程同步之信號(hào)C語(yǔ)言實(shí)例,本文直接給出代碼實(shí)例,需要的朋友可以參考下
    2015-04-04
  • 提高C程序效率的10種有效方法

    提高C程序效率的10種有效方法

    本文向你介紹規(guī)范你的C代碼的10種方法。需要的朋友可以過(guò)來(lái)參考下,希望對(duì)大家有所幫助
    2013-10-10
  • C++學(xué)習(xí)進(jìn)階之Makefile基礎(chǔ)用法詳解

    C++學(xué)習(xí)進(jìn)階之Makefile基礎(chǔ)用法詳解

    Makefile 通常指的是一個(gè)含有一系列命令(directive)的,通過(guò) Make自動(dòng)化編譯工具,幫助 C/C++ 程序?qū)崿F(xiàn)自動(dòng)編譯目標(biāo)文件的文件,這篇文章主要給大家介紹了關(guān)于C++學(xué)習(xí)進(jìn)階之Makefile基礎(chǔ)用法的相關(guān)資料,需要的朋友可以參考下
    2021-07-07
  • 用C++實(shí)現(xiàn)strcpy(),返回一個(gè)char*類型的深入分析

    用C++實(shí)現(xiàn)strcpy(),返回一個(gè)char*類型的深入分析

    本篇文章是對(duì)用C++實(shí)現(xiàn)strcpy(),返回一個(gè)char*類型進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-05-05
  • C++17使用std::optional表示可能存在的值

    C++17使用std::optional表示可能存在的值

    本文主要介紹了C++17使用std::optional表示可能存在的值,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2022-07-07
  • 重構(gòu)-C++實(shí)現(xiàn)矩陣的簡(jiǎn)單實(shí)例

    重構(gòu)-C++實(shí)現(xiàn)矩陣的簡(jiǎn)單實(shí)例

    下面小編就為大家?guī)?lái)一篇重構(gòu)-C++實(shí)現(xiàn)矩陣的簡(jiǎn)單實(shí)例。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2016-06-06
  • C++實(shí)現(xiàn)簡(jiǎn)單的圖書(shū)管理系統(tǒng)

    C++實(shí)現(xiàn)簡(jiǎn)單的圖書(shū)管理系統(tǒng)

    本文給大家分享的是使用C++實(shí)現(xiàn)簡(jiǎn)單的圖書(shū)管理系統(tǒng)的代碼,本系統(tǒng)采用了面向?qū)ο蟮某绦蛟O(shè)計(jì)方法,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2015-08-08

最新評(píng)論