这是非常简单的代码,但不知道它在哪里错了,我将图像从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保存在我的本地硬盘中但是空(空白图像)
请通过这个简单的问题帮我解决这个问题。
答案 0 :(得分:2)
如果您不一定要使用旧式的OpenCV结构,我建议切换到更新版本处理图像的更直观的方式:[cv :: Mat]和I / O:[cv:imread / cv :imwrite] 读一读: http://opencv.willowgarage.com/documentation/cpp/basic_structures.html http://docs.opencv.org/modules/highgui/doc/reading_and_writing_images_and_video.html
答案 1 :(得分:2)
如果您遇到旧的OpenCV,这里有一个更完整的答案:
正如我所看到的,Pixel,你正在使用JPEG,这意味着你需要处理8位(灰度)或24位(BGR)输入。
以下是您需要的代码:
if (inputImage->nChannels == 1)
{
cvCvtColor(inputImage, image24bit, CV_GRAY2BGR);
}
else
{
cvCopy(inputImage, image24bit, NULL);
}
答案 2 :(得分:1)
cvSaveImage只能保存8位图像。
您正在尝试将32位浮点图像保存为jpeg,但jpeg仅支持8位(确定标准有12位但没有人支持)。