1

我正在尝试使用 opencv cvSaveImage 函数保存图像。问题是我正在对图像执行 DCT,然后更改执行 DCT 后获得的系数,之后我正在执行逆 DCT 以取回像素值。但是这次我得到了十进制的像素值(例如 254.34576)。因此,当我使用 cvSaveImage 函数保存它时,它会丢弃小数点后的所有值(例如,将 254.34576 保存为 254)并保存图像。因此,我的结果受到影响。请帮忙

4

1 回答 1

0

“函数 cvSaveImage 将图像保存到指定的文件。图像格式根据文件扩展名选择,请参见 cvLoadImage。只能使用 8 位单通道或 3 通道(具有 'BGR' 通道顺序)图像保存这个函数。如果格式、深度或通道顺序不同,保存前使用cvCvtScale和cvCvtColor转换,或使用通用cvSave将图像保存为XML或YAML格式。

我建议调查 cvSave 功能。

但是,更简单的方法是编写自己的保存/加载函数,这将非常简单:

f = fopen("image.dat","wb");
fprintf(f,"%d%d",width,height);
for (y=0 to height)
  for (x=0 to width)
   fprintf(f,"%f",pixelAt(x,y));

并有相应的镜像功能供阅读。

PS 清晨,如果 fprintf 使用二进制文件,我一生都记不起了。但你明白了。您可以改用 fwrite() 。

于 2013-04-13T06:18:25.923 回答