計算した画像のヒストグラムがあります。実際にヒストグラムを確認できるように、これを画像として表示したいと考えています。私の問題はスケーリングに関係していると思いますが、左上の0,0から始まる座標系についても少し混乱しています。
int rows = channel.rows;
int cols = channel.cols;
int hist[256] = {0};
for(int i = 0; i<rows; i++)
{
for(int k = 0; k<cols; k++ )
{
int value = channel.at<cv::Vec3b>(i,k)[0];
hist[value] = hist[value] + 1;
}
}
Mat histPlot = cvCreateMat(256, 500,CV_8UC1);
for(int i = 0; i < 256; i++)
{
int mag = hist[i];
line(histPlot,Point(i,0),Point(i,mag),Scalar(255,0,0));
}
namedWindow("Hist",1);
imshow("Hist",histPlot);
これは、ヒストグラムを作成して結果を表示するための私の計算です。2 番目のループで mag/100 を実行すると、(逆さまですが) プロットに似たものが表示されます。画像の値を調整するたびにこのメソッドを呼び出すため、ヒストグラムも形状を変更する必要がありますが、そうは見えません。ヒストグラムをスケーリングして適切に表示するための助けをいただければ幸いです。