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

C++ OpenCV學(xué)習(xí)之圖像像素值統(tǒng)計(jì)

 更新時(shí)間:2022年01月23日 16:23:03   作者:寒山拾不得  
在圖像分析的時(shí)候,我們經(jīng)常需要對(duì)單通道圖像的像素進(jìn)行統(tǒng)計(jì)。本文將主要介紹利用C++ OpenCV實(shí)現(xiàn)的圖像像素值統(tǒng)計(jì)的幾種方法,需要的可以參考一下

opencv知識(shí)點(diǎn):

圖像像素最小/最大值 - minMaxLoc

圖像像素均值/標(biāo)準(zhǔn)差 - meanStdDev

本課所解決的問(wèn)題:

如何獲取圖像像素的最小/最大值?

如何獲取圖像像素的均值/標(biāo)準(zhǔn)差?

通過(guò)圖像像素統(tǒng)計(jì)值我們能干什么?

1.常用的像素值統(tǒng)計(jì)

在圖像分析的時(shí)候,我們經(jīng)常需要對(duì)單通道圖像的像素進(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ì)算

接下來(lái),我們來(lái)應(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)差,是把所有通道的都輸出了,那如果怎么輸出單通道的呢?

很簡(jiǎn)單,只要用到Mat::at

//opencv為了保證精度,平均值,標(biāo)準(zhǔn)差矩陣的數(shù)據(jù)類(lèi)型是double類(lèi)型
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ì)值分析

這里簡(jiǎn)單提一下圖像分析的事情

圖像的平均值和標(biāo)準(zhǔn)差會(huì)給我們帶來(lái)一定的信息

比如:當(dāng)平均值恒定,標(biāo)準(zhǔn)差很小時(shí),我們可以想到是基本純色的圖片,也就是低對(duì)比度的圖

在圖像分析的時(shí)候,我們關(guān)注圖像的有效信息,也就是ROI區(qū)域。

通過(guò)圖像像素的統(tǒng)計(jì)值,我們就可以對(duì)圖像的有效信息作出判斷。

比如,當(dāng)圖像標(biāo)準(zhǔn)差很小時(shí),圖像所攜帶的有效信息會(huì)很少,我們就要對(duì)圖像進(jìn)行篩選,通過(guò)一些手段過(guò)濾掉一些東西。

本課所用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類(lèi)

以上就是C++ OpenCV學(xué)習(xí)之圖像像素值統(tǒng)計(jì)的詳細(xì)內(nèi)容,更多關(guān)于OpenCV像素值統(tǒng)計(jì)的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • C++廣播通信實(shí)例

    C++廣播通信實(shí)例

    這篇文章主要介紹了C++實(shí)現(xiàn)廣播通信的方法,實(shí)例講述了C++ socket廣播通信的原理與實(shí)現(xiàn)方法,需要的朋友可以參考下
    2014-10-10
  • C語(yǔ)言中qsort函數(shù)用法及用冒泡排序?qū)崿F(xiàn)

    C語(yǔ)言中qsort函數(shù)用法及用冒泡排序?qū)崿F(xiàn)

    qsort函數(shù)是由C語(yǔ)言提供的標(biāo)準(zhǔn)庫(kù)函數(shù), 它的實(shí)現(xiàn)思想是快速排序。這篇文章主要介紹了C語(yǔ)言中qsort函數(shù)用法及用冒泡排序?qū)崿F(xiàn)qsort函數(shù)功能,需要的可以參考一下
    2022-10-10
  • C++封裝遠(yuǎn)程注入類(lèi)CreateRemoteThreadEx實(shí)例

    C++封裝遠(yuǎn)程注入類(lèi)CreateRemoteThreadEx實(shí)例

    這篇文章主要介紹了C++封裝遠(yuǎn)程注入類(lèi)CreateRemoteThreadEx實(shí)例,詳細(xì)講述了注入DLL到指定的地址空間以及從指定的地址空間卸載DLL的方法,需要的朋友可以參考下
    2014-10-10
  • c語(yǔ)言常見(jiàn)圖片格式判斷實(shí)例

    c語(yǔ)言常見(jiàn)圖片格式判斷實(shí)例

    這篇文章介紹了c語(yǔ)言常見(jiàn)圖片格式判斷實(shí)例,有需要的朋友可以參考一下
    2013-09-09
  • C++11顯示類(lèi)型轉(zhuǎn)換的優(yōu)點(diǎn)

    C++11顯示類(lèi)型轉(zhuǎn)換的優(yōu)點(diǎn)

    這篇文章主要介紹了C++11顯示類(lèi)型轉(zhuǎn)換的優(yōu)點(diǎn),幫助大家更好的理解和學(xué)習(xí)c++,感興趣的朋友可以了解下
    2020-08-08
  • C++實(shí)現(xiàn)LeetCode(198.打家劫舍)

    C++實(shí)現(xiàn)LeetCode(198.打家劫舍)

    這篇文章主要介紹了C++實(shí)現(xiàn)LeetCode(198.打家劫舍),本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • c++實(shí)現(xiàn)md5加密的代碼

    c++實(shí)現(xiàn)md5加密的代碼

    這篇文章主要介紹了c++實(shí)現(xiàn)md5加密的實(shí)例代碼,代碼簡(jiǎn)單易懂,對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-06-06
  • 利用C++如何實(shí)現(xiàn)一個(gè)阻塞隊(duì)列詳解

    利用C++如何實(shí)現(xiàn)一個(gè)阻塞隊(duì)列詳解

    這篇文章主要給大家介紹了關(guān)于利用C++如何實(shí)現(xiàn)一個(gè)阻塞隊(duì)列的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-10-10
  • QT出現(xiàn)沒(méi)有MySQL驅(qū)動(dòng)手動(dòng)編譯詳細(xì)步驟

    QT出現(xiàn)沒(méi)有MySQL驅(qū)動(dòng)手動(dòng)編譯詳細(xì)步驟

    這篇文章主要給大家介紹了關(guān)于QT出現(xiàn)沒(méi)有MySQL驅(qū)動(dòng)手動(dòng)編譯詳細(xì)步驟的相關(guān)資料,文中通過(guò)圖文介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用QT具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-04-04
  • C++菱形繼承和虛繼承的實(shí)現(xiàn)

    C++菱形繼承和虛繼承的實(shí)現(xiàn)

    本文主要介紹了C++菱形繼承和虛繼承的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-06-06

最新評(píng)論