本文共 717 字,大约阅读时间需要 2 分钟。
主要是计算图像的灰度直方图并显示#include#include #include #include using namespace std;using namespace cv;//求一幅灰度图像的直方图图像,返回的是直方图图像Mat getHistograph(const Mat grayImage);int main(int argc,char* argv[]){ //加载图像 Mat image; image=imread("lena.bmp",IMREAD_COLOR); //判断是否为空 if(image.empty()) { cerr<<""< (i,0)); //如果bin数目为0,则说明图像上没有该灰度值,则整列为黑色 //如果图像上有该灰度值,则将该列对应个数的像素设为白色 if(temp) { //由于图像坐标是以左上角为原点,所以要进行变换,使直方图图像以左下角为坐标原点 histImage.col(i).rowRange(Range(rows-temp,rows))=255; } } //由于直方图图像列高可能很高,因此进行图像对列要进行对应的缩减,使直方图图像更直观 Mat resizeImage; resize(histImage,resizeImage,Size(256,256)); return resizeImage;}
实验结果:
如果对求的直方图图像不进行resize(列太高了),结果为: