您好,登錄后才能下訂單哦!
小編今天帶大家了解C++ OpenCV中如何進行圖像像素值統計,文中知識點介紹的非常詳細。覺得有幫助的朋友可以跟著小編一起瀏覽文章的內容,希望能夠幫助更多想解決這個問題的朋友找到問題的答案,下面跟著小編一起深入學習“C++ OpenCV中如何進行圖像像素值統計”的知識吧。
前言
opencv知識點:
圖像像素最小/最大值 - minMaxLoc
圖像像素均值/標準差 - meanStdDev
在圖像分析的時候,我們經常需要對單通道圖像的像素進行統計,以下4種是比較常用的
最小值(min)
最大值(max)
平均值(mean)
標準差(standard deviation)
要求這4種統計,我們就要用到以下兩個API
minMaxLoc
meanStdDev
這兩個API非常有用,日后有很多地方用得到
接下來,我們來應用兩個API,求取4種像素值統計
首先是最小值,最大值
//函數定義 void pixel_statistics_demo(Mat& image); //函數實現 void QuickDemo::pixel_statistics_demo(Mat& image) { double minv, maxv; Point minLoc, maxLoc; std::vector<Mat> mvt; split(image, mvt); /* minMaxLoc 求取單通道圖像像素的最小值,最大值 共6個參數 第1個參數 輸入單通道圖像 第2個參數 輸出最小值 第3個參數 輸出最大值 第4個參數 輸出最小值點的坐標 第5個參數 輸出最大值點的坐標 第6個參數 輸入圖像的子數組(有時候我們會求取ROI區域的最小/最大值,就會傳入mask圖像) (這里的子數組,是一種圖像掩模,可以實現加東西/扣東西) */ for (int i = 0; i < mvt.size(); i++) { minMaxLoc(mvt[i], &minv, &maxv, &minLoc, &maxLoc); std::cout << "通道:" << i << " 最小值:" << minv << " 最大值:" << maxv << std::endl; } }
然后是,平均值和標準差
void QuickDemo::pixel_statistics_demo(Mat& image) { Mat mean, stddev; meanStdDev(image, mean, stddev); /* meanStdDev 求取平均值,標準差 共4個參數 第1個參數 輸入 第2個參數 輸出圖像像素的平均值,每個通道都會輸出一個 第3個參數 輸出圖像像素的標準差,每個通道都會輸出一個 第4個參數 輸入圖像的子數組(有時候我們會求取ROI區域的平均值/標準差,就會傳入mask圖像) (這里的子數組,是一種圖像掩模,可以實現加東西/扣東西) */ std::cout << "平均值" << std::endl << mean << std::endl; std::cout << "標準差" << std::endl<<stddev << std::endl; }
上圖中,輸出平均值和標準差,是把所有通道的都輸出了,那如果怎么輸出單通道的呢?
很簡單,只要用到Mat::at
//opencv為了保證精度,平均值,標準差矩陣的數據類型是double類型 std::cout<<"平均值"<< mean.at<double>(0, 0)<<std::endl; std::cout << "標準差" << stddev.at<double>(0, 0) << std::endl;
這里簡單提一下圖像分析的事情
圖像的平均值和標準差會給我們帶來一定的信息
比如:當平均值恒定,標準差很小時,我們可以想到是基本純色的圖片,也就是低對比度的圖
在圖像分析的時候,我們關注圖像的有效信息,也就是ROI區域。
通過圖像像素的統計值,我們就可以對圖像的有效信息作出判斷。
比如,當圖像標準差很小時,圖像所攜帶的有效信息會很少,我們就要對圖像進行篩選,通過一些手段過濾掉一些東西。
1.minMaxLoc
2.meanStdDev
3.Mat::at
雖然有12種重載,但只有6種傳參方式
1.單維度坐標——i0:沿維度 0 的索引
2.雙維度坐標——row 沿維度 0 的索引 ;col 沿維度 1 的索引
3.三維度坐標——i0 沿維度 0 的索引;i1 沿維度 1 的索引;i2 沿維度 2 的索引
4.維度數組坐標——int數組
5.維度數組坐標——vector數組
6.點的坐標——point類
感謝大家的閱讀,以上就是“C++ OpenCV中如何進行圖像像素值統計”的全部內容了,學會的朋友趕緊操作起來吧。相信億速云小編一定會給大家帶來更優質的文章。謝謝大家對億速云網站的支持!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。