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