如何将像素值转换为opencv中的显示图像

时间:2011-07-20 17:59:55

标签: c image-processing opencv image

我无法处理像素值(unsigned int)以转换为图像。 我想要将像素值转换为图像格式的语法。 cvset(所有类型的命令)都不起作用,我只得到一个特定的彩色图像,就好像只有红色或只有绿色等。请帮助我使用语法将像素值重建为图像。                    我能够将图像转换为像素,但我无法将图像从这些相同的像素值转换回来。

1 个答案:

答案 0 :(得分:2)

您正在使用的图片中有多少个频道?这是一个重要的信息。请记住,灰度图像通常有1个通道,而OpenCV加载的彩色图像通常有3个通道(R,G和B)。

要在C中使用3通道图像,您可以执行以下操作:

IplImage* pRGBImg = cvLoadImage("img.png", CV_LOAD_IMAGE_UNCHANGED); 
int width = pRGBImg->width; 
int height = pRGBImg->height;
int bpp = pRGBImg->nChannels; 

for (int i=0; i < width*height*bpp; i+=bpp) 
{

  pRGBImg->imageData[i] = r; // RED pixel
  pRGBImg->imageData[i+1] = g; // GREEN
  pRGBImg->imageData[i+2] = b; // BLUE 
}

对于单通道图像,循环的核心将更加简单,因为您只需要在img->imageData[i]上操作。