DIP 准备工作

工具:VS2010+OpenCV2.4.11

读入图片,并按点处理 没个像素点灰度级加1

代码:

 1 #include <opencv2\opencv.hpp>
 2 #include <iostream>
 3 #include <string>
 4 using namespace cv;
 5 using namespace std;
 6 int main()
 7 {
 8     IplImage* img; //声明IplImage指针
 9     //载入图像
10     img = cvLoadImage("C://Users//Administrator//Desktop//dip//pp.png",0) ;
11 
12     cvNamedWindow( "Image1", 1 );//创建窗口
13     cvShowImage( "Image1", img );//显示图像
14 
15     for(int row = 0; row<img->height; row++)
16     {
17         for (int col=0; col<img->width; col++)
18         {
19             if((unsigned char)(img->imageData[row*img->widthStep+col])!=255)
20                 img->imageData[row*img->widthStep+col] +=10;
21         }
22     }
23 
24         cvNamedWindow( "Image", 1 );//创建窗口
25         cvShowImage( "Image", img );//显示图像
26         cvWaitKey(0); //等待按键
27  
28         cvDestroyWindow( "Image" );//销毁窗口
29         cvDestroyWindow( "Image1" );//销毁窗口
30         cvReleaseImage( &img ); //释放图像
31         return 0;
32 }

结果:

代码中的注意点:

1.第19行的强制类型转换是因为默认的ImageData类型为char,也就是从-127~128,如果不转换原图的全白区域会变成全黑:

2.依然第19行,中括号中的内容是遍历到的像素点,之所用乘的是widthstep而不是width,是因为图像的存储 是以4的倍数进行的,也就是行末会有不存放像素灰度值的空余。

 

posted @ 2015-03-15 20:59  ReDlOvEbEeR  阅读(164)  评论(0)    收藏  举报