opencv複習的第一天

2021-09-29 05:28:45 字數 2014 閱讀 7909

mat類的幾種基本建立方式:

能夠建立或指向乙個資料矩陣(儲存),且可以調整的指向部分資料矩陣的類。

1.畫素點,一張**是由x行y列的畫素點組成的,而記錄這些畫素點的資料空間,便是矩陣。

2.bgr三色(藍綠紅,三通道),一般的每個畫素點(儲存三個值)皆是由這三種顏色的明暗程度(0-255)構成的。

3.灰度(黑白**,單通道),早期的黑白電視肯定只有一種色彩表達方式就是黑白的明暗相當於單通道,每個畫素點只有乙個值(0-255)代表該畫素點的明亮程度。

//物件a記錄了**1的大小,儲存方法和在專案執行記憶體中的儲存位置。

mat a

=imread

("1.png"

);

方法二:以mat自身的建構函式建立:

原函式 mat(int rows, int cols, int type, const scalar& s);

//4行4列的3通道,純黑(0,0,0)

mat a(4,4,cv_8uc3

,scalar:

:all(0));

rows代表行數;cols代表列數;

type:cv_(單個畫素的單個通道儲存位數)(通道數值儲存的型別)c(通道數)

方法三:為已存在的ipllmage建立資訊頭,基本淘汰不進行討論。

方法四:create()函式

//3行4列的通道數為三的,記憶體已經生成。

mat m;m.

create(3

,4,cv_8uc(3));

生成內容方法五:matlab式初始化

matlab的矩陣與opencv儲存很類似,因此opencv有matlab初始化矩陣的幾種簡單方法:zeros(),ones(),eye()。

前兩個可以直接猜測出來是建立全零(zero)矩陣,後者建立全壹(one)矩陣。最後乙個(eye)是建立「單位矩陣」,也就是對角線為壹,其他為零。

它們共同的特點是對於多通道只對第一通道處理,其他通道預設為零。

//3行4列的通道數為2的,記憶體已經生成。

mat:

:eye(3

,4,cv_8uc2

);

方法六:針對小矩陣的初始化,採用逗號分隔

mat a =

(mat_(2

,3)<<

0.2,1,

2,3,

4,5)

;

mat m = (mat_《資料型別》(rows,cols)<

方法七:對已經存在物件建立新的資訊頭

這個資訊頭其實說法錯誤,其實是開闢了是的記憶體空間。用已經存在的mat類物件來初始化乙個新的mat類物件。

mat a =

(mat_(2

,3)<<1,

1,1,

2,2,

2); mat b = a.

row(0)

.clone()

; cout <<

"修改前"

<< endl;

cout <<

"a為:\n"

<< a << endl;

cout <<

"b為:\n"

<< b << endl;

a.at(0

,2)=

7;cout <<

"修改後"

<< endl;

cout <<

"a為:\n"

<< a << endl;

cout <<

"b為:\n"

可以看出當物件a改變時物件b中的值沒有改變。

opencv打卡第一天

include include include using namespace cv 命名空間 int main int argc,char ar namewindow aa cv window autosize 命名窗,自動適應窗 imshow aa src 顯示mat物件 mat qwe cvt...

mysql複習第一天

匹配任意單個字元 模版資料 查詢first name第二個字元為t的資料 select first name from table where first name like t 指定某個符號為轉義符 查詢first name第二個字元為 的資料 select first name from tab...

Spring 複習第一天

一 sping的優點 1 方便解耦,簡化開發 spring就是乙個大工廠,可以將所有物件建立和依賴關係維護,交給spring管理。2 aop程式設計的支援 spring提供面向切面程式設計,可以方便的實現對程式進行許可權攔截,執行監控等功能。3 宣告式事務的支援 只需要通過配置就可以完成對事物的管理...