【Opencv】直方图函数 calchist()
生活随笔
收集整理的這篇文章主要介紹了
【Opencv】直方图函数 calchist()
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
calchist函數(shù)需要包含頭文件
#include <opencv2/imgproc/imgproc.hpp>
函數(shù)聲明(三個重載 calchist函數(shù)):
//! computes the joint dense histogram for a set of images.
CV_EXPORTS void calcHist( const Mat* images, int nimages,const int* channels, InputArray mask,OutputArray hist, int dims, const int* histSize,const float** ranges, bool uniform=true, bool accumulate=false );//! computes the joint sparse histogram for a set of images.
CV_EXPORTS void calcHist( const Mat* images, int nimages,const int* channels, InputArray mask,SparseMat& hist, int dims,const int* histSize, const float** ranges,bool uniform=true, bool accumulate=false );CV_EXPORTS_W void calcHist( InputArrayOfArrays images,const vector<int>& channels,InputArray mask, OutputArray hist,const vector<int>& histSize,const vector<float>& ranges,bool accumulate=false );
官方文檔:
The functions?calcHist?calculate the histogram of one or more arrays. The elements of a tuple used to increment a histogram bin are taken from the corresponding input arrays at the same location. The sample below shows how to compute a 2D Hue-Saturation histogram for a color image.
| Parameters: |
|
|---|
釋義:
images:源圖像矩陣(可以多個,但必須滿足一定條件:同等深度,同等大小,同種數(shù)據(jù)類型:CV_8U或CV_32F,通道數(shù)不需要一致)
nimages:源圖像個數(shù)
channels:用來計算直方圖
例程:
#include <cv.h> #include <highgui.h>using namespace cv;int main( int argc, char** argv ) {Mat src, hsv;if( argc != 2 || !(src=imread(argv[1], 1)).data )return -1;cvtColor(src, hsv, CV_BGR2HSV);// Quantize the hue to 30 levels// and the saturation to 32 levelsint hbins = 30, sbins = 32;int histSize[] = {hbins, sbins};// hue varies from 0 to 179, see cvtColorfloat hranges[] = { 0, 180 };// saturation varies from 0 (black-gray-white) to// 255 (pure spectrum color)float sranges[] = { 0, 256 };const float* ranges[] = { hranges, sranges };MatND hist;// we compute the histogram from the 0-th and 1-st channelsint channels[] = {0, 1};calcHist( &hsv, 1, channels, Mat(), // do not use maskhist, 2, histSize, ranges,true, // the histogram is uniformfalse );double maxVal=0;minMaxLoc(hist, 0, &maxVal, 0, 0);int scale = 10;Mat histImg = Mat::zeros(sbins*scale, hbins*10, CV_8UC3);for( int h = 0; h < hbins; h++ )for( int s = 0; s < sbins; s++ ){float binVal = hist.at<float>(h, s);int intensity = cvRound(binVal*255/maxVal);rectangle( histImg, Point(h*scale, s*scale),Point( (h+1)*scale - 1, (s+1)*scale - 1),Scalar::all(intensity),CV_FILLED );}namedWindow( "Source", 1 );imshow( "Source", src );namedWindow( "H-S Histogram", 1 );imshow( "H-S Histogram", histImg );waitKey(); }
?
-
?
?
轉(zhuǎn)載于:https://www.cnblogs.com/Atanisi/p/6910125.html
總結(jié)
以上是生活随笔為你收集整理的【Opencv】直方图函数 calchist()的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 球球大家,谁有《东宫西宫》的电影资源,谢
- 下一篇: 【LeetCode】Palindrome