line(drawImage, Point(i, drawImage.rows - 1), Point(i, drawImage.rows - 1 - value), Scalar(255, 0, 0));
}
imshow("【直方图】", drawImage);
waitKey(0);
return 0;
}

5彩色直方图的绘制:
int main()
{
Mat srcImage = imread("mask.jpg");
imshow("【原图】", srcImage);
int channels = 0;
MatND dstHist;
int histSize = 256 ;
float midRanges[] = { 0, 256 };
const float *ranges[] = { midRanges };
calcHist(&srcImage, 1, &channels, Mat(), dstHist, 1, &histSize, ranges, true, false);
//绘制蓝色通道
Mat b_drawImage = Mat::zeros(Size(256, 256), CV_8UC3);
double g_dHistMaxValue = https://vvvtt.com/article/0;
minMaxLoc(dstHist, 0, &g_dHistMaxValue, 0, 0);
for (int i = 0; i < histSize; i++)
{
int value = https://vvvtt.com/article/cvRound(dstHist.at
rectangle(b_drawImage,
Point(i * 8, b_drawImage.rows - 1),
Point(i * 8 + 256 / histSize, b_drawImage.rows - 1 - value)
,Scalar(255, 0, 0), -1);
}
imshow("【蓝色通道的直方图】", b_drawImage);
//绘制绿色通道
channels = 1;
calcHist(&srcImage, 1, &channels, Mat(), dstHist, 1, &histSize, ranges, true, false);
Mat g_drawImage = Mat::zeros(Size(256, 256), CV_8UC3);
minMaxLoc(dstHist, 0, &g_dHistMaxValue, 0, 0);
for (int i = 0; i < histSize; i++)
{
int value = https://vvvtt.com/article/cvRound(dstHist.at
rectangle(g_drawImage,
Point(i * 8, g_drawImage.rows - 1),
猜你喜欢
- 股票手续费是怎么计算的?
- 儿童计算机编程 儿童计算机教育中心
- 营养成分表中的“能量”如何计算
- 600除以24的简便计算 600除以24的简便计算方法
- 59x22的竖式怎么写 59乘22的竖式计算
- 如何购买国债合适,国债收益率如何计算
- 8个8怎样等于一千 8个8等于一千的计算方法
- 股票知识:股价偏离值怎样计算?
- 怎样将计算机内的文件进行归类存放
- OpenCV例程:针对对比度差的图像,目标分割方法
