重新學習2 0以上OPENCV(基於MAT型別)3

2021-07-28 01:59:51 字數 1575 閱讀 4427

影象直方圖是反映乙個影象畫素分布的統計表,其實橫座標代表了影象畫素的種類,可以是灰度的,也可以是彩色的。縱座標代表了每一種顏色值在影象中的畫素總數或者佔所有畫素個數的百分比。

影象是由畫素構成,因為反映畫素分布的直方圖往往可以作為影象乙個很重要的特徵。在實際工程中,影象直方圖在特徵提取、影象匹配等方面都有很好的應用。

opencv中計算影象直方圖的函式是:

void calchist(const mat* images, int nimages, const int* channels, inputarray mask, outputarray hist, int dims, const int* histsize, const float** ranges, bool uniform, bool accumulate) (c++ function, in histograms)

引數:

const mat* images:為輸入影象的指標。

int nimages:要計算直方圖的影象的個數。此函式可以為多圖 像求直方圖,我們通常情況下都只作用於單一影象,所以通常nimages=1。

const int* channels:影象的通道,它是乙個陣列,如果是灰度影象則channels[1]=;如果是彩色影象則channels[3]=;如果是只是求彩色影象第2個通道的直方圖,則channels[1]=。

iuputarray mask:是乙個遮罩影象用於確定哪些點參與計算,實際應用中是個很好的引數,預設情況我們都設定為乙個空影象,即:mat()。

outarray hist:計算得到的直方圖

int dims:得到的直方圖的維數,灰度影象為1維,彩色影象為3維。

const int* histsize:直方圖橫座標的區間數。如果是10,則它會橫座標分為10份,然後統計每個區間的畫素點總和。

const float** ranges:這是乙個二維陣列,用來指出每個區間的範圍。

後面兩個引數都有預設值,uniform引數表明直方圖是否等距,最後乙個引數與多影象下直方圖的顯示與儲存有關。

int main()

; const

int histsize[1]=;

float hranges[2]=;

const

float* ranges[1]=;

ma*** hist;

calchist(&image,1,channels,mat(),hist,1,histsize,ranges);

return

0;}

注:opencv2.2以前的版本裡它們稍微有點區別:

mat特指2維矩陣

ma***是多維矩陣(>=3維)

但2.2以後它們被統一成mat,mat可以表示任意維矩陣

所以沒必要在意ma***和mat的區別,如果你用的是2.2以後的版本,統一使用mat就行了。

重新學習makefile

今天回顧了一下makefile,做下筆記 首先準備幾個簡單的檔案 add.c head.h main.c mul.c sub.c 然後第一版 makefile 然後第二版 gcc c main.c o main.o 然後第三版 makefile 的語法跟shell 很像 第四版 目標 依賴 tab ...

重新學習struts

這就是所謂的一邊工作一邊學習。今天準備把給公司寫個管理頁面,按照之前的路數,寫起來應該挺快,但是不太規範。也就沉下心來學習一下了。第二個學習的是,異常處理。也是在學校的時候,聽老師說過,struts2有提供乙個異常處理機制。平常我們有些異常處理,會在 中寫try catch。public strin...

mysql重新學習筆記

mysql命令複習 desc table 列式展示 alter add 增加列 delete和 truncate table的區別 1.delete dml語言 資料還可以找回來,恢復回來 逐條刪除 刪除速度要慢一些 可以有條件的刪除。delete from 表名 where 條件 2.trunca...