OpenCV2+入門系列(四):計算映像的長條圖,平均灰階,灰階方差

來源:互聯網
上載者:User

標籤:

本篇懶得排版,直接在網頁html編輯器編輯

 

在影像處理時,我們常常需要求出映像的長條圖、灰階平均值、灰階的方差,這裡給出一個opencv2+內建程式,實現這些功能。

 

長條圖

對於長條圖,使用cv::calcHist函數可以求出。

原型

void calcHist(const Mat* arrays, int narrays, const int* channels, InputArray mask, OutputArray
  hist, int dims, const int* histSize, const float** ranges, bool uniform=true, bool accumulate=
  false );void calcHist(const Mat* arrays, int narrays, const int* channels, InputArray mask, SparseMat&
  hist, int dims, const int* histSize, const float** ranges, bool uniform=true, bool accumulate=
  false );
  • arrays: 輸入映像(或數組、數組集)
  • narrays: 輸入數組的個數
  • channels: 需要統計的通道 
  • mask: 掩碼( 0 表示忽略該像素), 如果未定義,則不使用掩碼
  • hist: 儲存長條圖的矩陣
  • dims: 長條圖維數
  • histSize: 每個維度bin數目
  • ranges: 每個維度取值範圍
  • uniform 和 accumulate: bin大小相同,清楚長條圖痕迹

 

這裡給出一個我封裝好的計算長條圖的方法

1 void GetGrayHist(cv::Mat& src, cv::Mat& grayHist, int histSize=255)2 {3     float range[] = { 0, 255 };4     const float* histRange = { range };5     bool uniform = true; bool accumulate = false;6      (&src, 1, 0, cv::Mat(), grayHist, 1, &histSize, &histRange, uniform, accumulate);7 }

 

平均值與方差

 平均值與方差的計算使用cv::meanStdDev函數

該函數有四個輸入參數

1Mat 映像

2Mat 平均值,計算後會變成Float64型(double)1*1。

3Mat 方差,計算後同樣會變成Float64型1*1。

4掩膜

 

以下是一個計算映像平均灰階與灰階方差的程式:

void GetGrayAvgStdDev(cv::Mat& src, double& avg, double &stddev){    cv::Mat img;    if (src.channels() == 3)        cv::cvtColor(src, img, CV_BGR2GRAY);    else        img = src;    cv::mean(src);    cv::Mat mean;    cv::Mat stdDev;    cv::meanStdDev(img, mean, stdDev);    avg = mean.ptr<double>(0)[0];    stddev = stdDev.ptr<double>(0)[0];}

 

OpenCV2+入門系列(四):計算映像的長條圖,平均灰階,灰階方差

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.