3通道图像RGB值读取和灰度图像灰度值读取

来源:互联网 发布:多久修一次眉毛知乎 编辑:程序博客网 时间:2024/05/29 11:42

终于弄清楚了,原来灰度图像每个像素灰度值的读取和RGB图像是不一样的。终于理解了通道的概念,RGB因为是三通道,所以需要*3,而灰度图像不需要,是单通道的

下面的程序实现将读入的图片和其灰度图片全变成白色:

#include <cv.h>#include <highgui.h>int main(void){//读入图像IplImage* image = cvLoadImage( "F:\\gaosu1.jpg" );//求出原始图像大小int height=cvGetSize(image).height;int width=cvGetSize(image).width;cvNamedWindow("image",1);cvShowImage("image",image);//3通道图像IplImage* pImg=cvCloneImage(image);cvZero(pImg);//转换成灰度图像之用,1通道IplImage* gray=cvCreateImage(cvGetSize(image),IPL_DEPTH_8U,1);cvZero(gray);for(int i=0;i<height;i++){uchar *ptr = (uchar*) (pImg->imageData + i* pImg->widthStep);uchar *ptr2 = (uchar*) (gray->imageData + i* gray->widthStep);for(int j=0;j<width;j++){ptr[3*j]=255;ptr[3*j+1]=255;ptr[3*j+2]=255;ptr2[j]=255;}}cvNamedWindow("imgw",1);cvShowImage("imgw",pImg);cvNamedWindow("grayw",1);cvShowImage("grayw",gray);cvWaitKey(0);cvDestroyWindow("imgw");cvDestroyWindow("grayw");cvReleaseImage(&pImg);cvReleaseImage(&image);cvReleaseImage(&gray);}



原创粉丝点击