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

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

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

#include 
#include 
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;iimageData + i* pImg->widthStep);
		uchar *ptr2 = (uchar*) (gray->imageData + i* gray->widthStep);
		for(int j=0;j



你可能感兴趣的:(opencv)