calcHist

Mat img = (Mat_<uchar>(9, 12) <<
		1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
		2, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
		3, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
		4, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
		5, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
		6, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
		7, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
		8, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12,
		9, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
		);
	//灰度值有效範圍是1~12,所以設定爲hr1[]={1,13};矩陣b的灰度值有效範圍是1<=V<13
	float hr1[] = { 1,13 };

	//將灰度範圍均分爲3部分,三個直方條取值範圍分別爲:第1部分1~4,第2部分5~8,第3部分9~12。
   //因此令histSize[1]={3},這裏的3意味着整個圖像灰度範圍1~12被均分爲3部分,分別統計像素個數。
	int histSize[1] = { 3 };

	int channels[1] = { 0 };
	
	const float* ranges[] = { hr1 };

	Mat hist;
	calcHist(&img, 1, channels, Mat(), hist, 1, histSize, ranges, true);
	
	//其中hist輸出的是1-4,5-8,9-12區域中像素值的個數統計,且分別是31,40,37
	//且Mat的內容--> 行:直方圖個數,列:1

	cout << "hist=" << endl << hist << endl;

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章