C++ OpenCV學(xué)習(xí)之圖像像素值統(tǒng)計(jì)
opencv知識(shí)點(diǎn):
圖像像素最小/最大值 - minMaxLoc
圖像像素均值/標(biāo)準(zhǔn)差 - meanStdDev
本課所解決的問題:
如何獲取圖像像素的最小/最大值?
如何獲取圖像像素的均值/標(biāo)準(zhǔn)差?
通過圖像像素統(tǒng)計(jì)值我們能干什么?
1.常用的像素值統(tǒng)計(jì)
在圖像分析的時(shí)候,我們經(jīng)常需要對單通道圖像的像素進(jìn)行統(tǒng)計(jì),以下4種是比較常用的
最小值(min)
最大值(max)
平均值(mean)
標(biāo)準(zhǔn)差(standard deviation)
要求這4種統(tǒng)計(jì),我們就要用到以下兩個(gè)API
- minMaxLoc
- meanStdDev
這兩個(gè)API非常有用,日后有很多地方用得到
2.像素值統(tǒng)計(jì)計(jì)算
接下來,我們來應(yīng)用兩個(gè)API,求取4種像素值統(tǒng)計(jì)
首先是最小值,最大值
//函數(shù)定義 void pixel_statistics_demo(Mat& image); //函數(shù)實(shí)現(xiàn) void QuickDemo::pixel_statistics_demo(Mat& image) { ?? ?double minv, maxv; ?? ?Point minLoc, maxLoc; ?? ?std::vector<Mat> mvt; ?? ?split(image, mvt); ?? ?/* ?? ?minMaxLoc ?? ??? ?求取單通道圖像像素的最小值,最大值 ?? ??? ??? ?共6個(gè)參數(shù) ?? ??? ??? ??? ?第1個(gè)參數(shù) 輸入單通道圖像 ?? ??? ??? ??? ?第2個(gè)參數(shù) 輸出最小值 ?? ??? ??? ??? ?第3個(gè)參數(shù) 輸出最大值 ?? ??? ??? ??? ?第4個(gè)參數(shù) 輸出最小值點(diǎn)的坐標(biāo) ?? ??? ??? ??? ?第5個(gè)參數(shù) 輸出最大值點(diǎn)的坐標(biāo) ?? ??? ??? ? ?? ??? ??? ??? ?第6個(gè)參數(shù) 輸入圖像的子數(shù)組(有時(shí)候我們會(huì)求取ROI區(qū)域的最小/最大值,就會(huì)傳入mask圖像) ?? ??? ??? ??? ??? ??? ?(這里的子數(shù)組,是一種圖像掩模,可以實(shí)現(xiàn)加?xùn)|西/扣東西)? ?? ?*/ ?? ?for (int i = 0; i < mvt.size(); i++) { ?? ??? ?minMaxLoc(mvt[i], &minv, &maxv, &minLoc, &maxLoc); ?? ??? ?std::cout << "通道:" << i << " 最小值:" << minv << " 最大值:" << maxv << std::endl; ?? ?} }
然后是,平均值和標(biāo)準(zhǔn)差
void QuickDemo::pixel_statistics_demo(Mat& image) { ?? ?Mat mean, stddev; ?? ?meanStdDev(image, mean, stddev); ?? ?/* ?? ?meanStdDev ?? ??? ?求取平均值,標(biāo)準(zhǔn)差 ?? ??? ??? ?共4個(gè)參數(shù) ?? ??? ??? ??? ?第1個(gè)參數(shù) 輸入 ?? ??? ??? ??? ?第2個(gè)參數(shù) 輸出圖像像素的平均值,每個(gè)通道都會(huì)輸出一個(gè) ?? ??? ??? ??? ?第3個(gè)參數(shù) 輸出圖像像素的標(biāo)準(zhǔn)差,每個(gè)通道都會(huì)輸出一個(gè) ?? ??? ??? ??? ? ?? ??? ??? ??? ?第4個(gè)參數(shù) 輸入圖像的子數(shù)組(有時(shí)候我們會(huì)求取ROI區(qū)域的平均值/標(biāo)準(zhǔn)差,就會(huì)傳入mask圖像) ?? ??? ??? ??? ??? ??? ?(這里的子數(shù)組,是一種圖像掩模,可以實(shí)現(xiàn)加?xùn)|西/扣東西)? ?? ?*/ ?? ?std::cout << "平均值" << std::endl << mean << std::endl; ?? ?std::cout << "標(biāo)準(zhǔn)差" << std::endl<<stddev << std::endl; }
上圖中,輸出平均值和標(biāo)準(zhǔn)差,是把所有通道的都輸出了,那如果怎么輸出單通道的呢?
很簡單,只要用到Mat::at
//opencv為了保證精度,平均值,標(biāo)準(zhǔn)差矩陣的數(shù)據(jù)類型是double類型 std::cout<<"平均值"<< mean.at<double>(0, 0)<<std::endl; std::cout << "標(biāo)準(zhǔn)差" << stddev.at<double>(0, 0) << std::endl;
3.圖像統(tǒng)計(jì)值分析
這里簡單提一下圖像分析的事情
圖像的平均值和標(biāo)準(zhǔn)差會(huì)給我們帶來一定的信息
比如:當(dāng)平均值恒定,標(biāo)準(zhǔn)差很小時(shí),我們可以想到是基本純色的圖片,也就是低對比度的圖
在圖像分析的時(shí)候,我們關(guān)注圖像的有效信息,也就是ROI區(qū)域。
通過圖像像素的統(tǒng)計(jì)值,我們就可以對圖像的有效信息作出判斷。
比如,當(dāng)圖像標(biāo)準(zhǔn)差很小時(shí),圖像所攜帶的有效信息會(huì)很少,我們就要對圖像進(jìn)行篩選,通過一些手段過濾掉一些東西。
本課所用API查閱
1.minMaxLoc
2.meanStdDev
3.Mat::at
雖然有12種重載,但只有6種傳參方式
1.單維度坐標(biāo)——i0:沿維度 0 的索引
2.雙維度坐標(biāo)——row 沿維度 0 的索引 ;col 沿維度 1 的索引
3.三維度坐標(biāo)——i0 沿維度 0 的索引;i1 沿維度 1 的索引;i2 沿維度 2 的索引
4.維度數(shù)組坐標(biāo)——int數(shù)組
5.維度數(shù)組坐標(biāo)——vector數(shù)組
6.點(diǎn)的坐標(biāo)——point類
以上就是C++ OpenCV學(xué)習(xí)之圖像像素值統(tǒng)計(jì)的詳細(xì)內(nèi)容,更多關(guān)于OpenCV像素值統(tǒng)計(jì)的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
C語言中qsort函數(shù)用法及用冒泡排序?qū)崿F(xiàn)
qsort函數(shù)是由C語言提供的標(biāo)準(zhǔn)庫函數(shù), 它的實(shí)現(xiàn)思想是快速排序。這篇文章主要介紹了C語言中qsort函數(shù)用法及用冒泡排序?qū)崿F(xiàn)qsort函數(shù)功能,需要的可以參考一下2022-10-10C++封裝遠(yuǎn)程注入類CreateRemoteThreadEx實(shí)例
這篇文章主要介紹了C++封裝遠(yuǎn)程注入類CreateRemoteThreadEx實(shí)例,詳細(xì)講述了注入DLL到指定的地址空間以及從指定的地址空間卸載DLL的方法,需要的朋友可以參考下2014-10-10C++11顯示類型轉(zhuǎn)換的優(yōu)點(diǎn)
這篇文章主要介紹了C++11顯示類型轉(zhuǎn)換的優(yōu)點(diǎn),幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下2020-08-08C++實(shí)現(xiàn)LeetCode(198.打家劫舍)
這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(198.打家劫舍),本篇文章通過簡要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-08-08利用C++如何實(shí)現(xiàn)一個(gè)阻塞隊(duì)列詳解
這篇文章主要給大家介紹了關(guān)于利用C++如何實(shí)現(xiàn)一個(gè)阻塞隊(duì)列的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2020-10-10QT出現(xiàn)沒有MySQL驅(qū)動(dòng)手動(dòng)編譯詳細(xì)步驟
這篇文章主要給大家介紹了關(guān)于QT出現(xiàn)沒有MySQL驅(qū)動(dòng)手動(dòng)編譯詳細(xì)步驟的相關(guān)資料,文中通過圖文介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用QT具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2023-04-04