标签:
工具: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的倍数进行的,也就是行末会有不存放像素灰度值的空余。
标签:
原文地址:http://www.cnblogs.com/luckyhtt/p/4340398.html