zoukankan      html  css  js  c++  java
  • Opencv——灰度直方图

    灰度直方图是灰度级的函数,它表示图像中具有某种灰度级的像素的个数,反映了图像中某种灰度出现的频率。

    如果将图像总像素亮度(灰度级别)看成是一个随机变量,则其分布情况就反映了图像的统计特性,这可用probability density function (PDF)来刻画和描述,表现为灰度直方图。

    灰度直方图的分布函数为:

                h(k)=nk

    其中,k是值第k个灰度级,nk是灰度级为rk的像素总和。如果是8位灰度图像,k=0,1,2,...,255

    下面代码如下:

     1 #include<cv.h>
     2 #include<highgui.h>
     3 
     4 using namespace cv;
     5 using namespace std;
     6 
     7 int main()
     8 {
     9     IplImage *src = cvLoadImage("D:\Opencv\Images\GrayLena.bmp");
    10     int pix[256];
    11     for (int i = 0; i < 256; i++)
    12         pix[i] = 0;
    13     int grayValue;
    14     for (int i = 0; i < src->height;i++)
    15     for (int j = 0; j < src->width; j++)
    16     {
    17         grayValue = ((char*)(src->imageData + j*src->widthStep))[i];
    18         pix[grayValue]++;
    19     }
    20 
    21     int max = 0;
    22     for (int i = 0; i<256; i++)
    23     {
    24         if (pix[i]>max)
    25         {
    26             max = pix[i];
    27         }
    28     }
    29     IplImage* dst = cvCreateImage(cvSize(400, 300), 8, 3);
    30     cvSet(dst, cvScalarAll(255), 0);
    31     double bin_width = (double)dst->width / 256;
    32     double bin_unith = (double)dst->height / max;
    33     for (int i = 0; i<256; i++)
    34     {
    35         CvPoint p0 = cvPoint(i*bin_width, dst->height);
    36         CvPoint p1 = cvPoint((i + 1)*bin_width, dst->height - pix[i] * bin_unith);
    37         cvRectangle(dst, p0, p1, cvScalar(0, 255), -1, 8, 0);
    38     }
    39 
    40     cvNamedWindow("destImage");
    41     cvShowImage("destImage",dst);
    42     cvWaitKey();
    43     cvReleaseImage(&dst);
    44     cvDestroyWindow("destImage");
    45     return 0;
    46 }

  • 相关阅读:
    ZOJ2913Bus Pass(BFS+set)
    HDU1242 Rescue(BFS+优先队列)
    转(havel 算法)
    ZOJ3761(并查集+树的遍历)
    ZOJ3578(Matrix)
    HDU1505
    ZOJ3574(归并排序求逆数对)
    VUE-脚手架搭建
    VUE脚手架搭建
    VUE-node.js
  • 原文地址:https://www.cnblogs.com/BasilLee/p/3819038.html
Copyright © 2011-2022 走看看