zoukankan      html  css  js  c++  java
  • 对图像每个像素点量化

    图像可以看成一个个像素点组成,一般来讲每个像素点都划分成了0-255个灰度,这就是图像的量化。当然量化可以更高或更低,可以将灰度从0-63变化,也可以从0-16变化,等等。所谓量化,就是对图像的采样。

      例如下面我们用opencv将图像按量化层级为64来量化:

        首先,取出每个像素的灰度值,这些值的取值范围是0~255。按量化层级为64来量化,即将其灰度值除以四再乘以四即可。

    代码如下:

     1 /*     
     2 功能:读入图像文件,对图像量化,然后显示图像在屏幕上,并将量化后的图像保存
     3 */
     4 #include <stdlib.h>
     5 #include <stdio.h>
     6 #include <math.h>
     7 #include <cv.h>
     8 #include <highgui.h>
     9 int main(int argc, char *argv[])
    10 {
    11     IplImage* img = 0; 
    12     int height,width,step,channels;
    13     uchar *data;
    14     int i,j,k;
    15     if(argc<2)
    16     {
    17         printf("Usage: main <image-file-name>/n/7");
    18         exit(0);
    19     }
    20     // 载入图像  
    21     img=cvLoadImage(argv[1],-1);
    22     if(!img)
    23     {
    24         printf("Could not load image file: %s/n",argv[1]);
    25         exit(0);
    26     }
    27     // 获取图像信息
    28     height    = img->height;  
    29     width     = img->width;    
    30     step      = img->widthStep;    
    31     channels  = img->nChannels;
    32     data      = (uchar *)img->imageData;
    33     printf("Processing a %dx%d image with %d channels/n",height,width,channels); 
    34     // 创建窗口
    35     cvNamedWindow("mainWin", CV_WINDOW_AUTOSIZE); 
    36     cvMoveWindow("mainWin", 100, 100);
    37     // 量化图像
    38     for(i=0;i<height;i++) 
    39         for(j=0;j<width;j++) 
    40             for(k=0;k<channels;k++)
    41                 data[i*step+j*channels+k]=data[i*step+j*channels+k]/4;
    42     for(i=0;i<height;i++) 
    43         for(j=0;j<width;j++) 
    44             for(k=0;k<channels;k++)
    45                 data[i*step+j*channels+k]=data[i*step+j*channels+k]*4;
    46     // 显示图像
    47     cvShowImage("mainWin", img );
    48     /*保存图像*/
    49     cvSaveImage("lena.pgm",img);
    50     cvWaitKey(0);
    51     cvReleaseImage(&img );
    52     printf("height=%d  width=%d step=%d channels=%d",height,width,step,channels);
    53     return 0;
    54 }
  • 相关阅读:
    python基础集结号
    3,jieba gensim 最好别分家之最简单的相似度实现
    2,PyAudio 实现录音 自动化交互实现问答
    1,百度云接口
    16,Flask-Migrate
    移动端web开发 尽量哪些标签 常用标签及注意事项
    flex布局
    -webkit-box
    网页图片jpg,gif,png对比。
    原生判断是否存在某个类,手机端事件,手机端测试
  • 原文地址:https://www.cnblogs.com/yongjiuzhizhen/p/3454555.html
Copyright © 2011-2022 走看看