这是非常简单的代码,但是我不知道它哪里写错了,我将图像从8隐蔽到32

像这样的线程

How to convert an 8-bit OpenCV IplImage* to a 32-bit IplImage*?

char * InputImagePath = "E:\\Inp\\lg1.jpg";
IplImage* ImageIn = cvLoadImage(InputImagePath,1);

IplImage *img32 = cvCreateImage(cvGetSize(ImageIn), 32 , 3);
cvConvertScale(ImageIn,img32,1/255.);

cvSaveImage("E:\\Inp\\zzout.jpg",img32);

输出:zzout.jpg保存在我的本地硬盘中,但是它是空的(空白图像)

请从这个帮助我。

最佳答案

如果您卡在旧的OpenCV上,这里是一个更完整的答案:

  • 8位图像-1个颜色通道
  • 24位图像-3个颜色通道(蓝色,绿色,红色)
  • 32位图像-4个颜色通道(BGR + Alpha-在PNG中非常常见)

  • 如我所见,Pixel是在JPEG上操作,这意味着您将需要处理8位(灰度)或24位(BGR)输入。

    这是您需要的代码:
    if (inputImage->nChannels == 1)
    {
        cvCvtColor(inputImage, image24bit, CV_GRAY2BGR);
    }
    else
    {
        cvCopy(inputImage, image24bit, NULL);
    }
    

    关于c++ - Opencv cvConvertScale中面临的问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/16707104/

    10-12 00:43