OpenCV:calcHist计算图像直方图( 三 )


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

OpenCV:calcHist计算图像直方图



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(i) * 256 * 0.9 / g_dHistMaxValue);
              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(i) * 256 * 0.9 / g_dHistMaxValue);
              rectangle(g_drawImage,
                     Point(i * 8, g_drawImage.rows - 1),

猜你喜欢