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

最佳答案

“功能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));

并具有相应的读取镜功能。

附言清晨,如果fprintf使用二进制文件,我将不记得我的一生。但是你明白了。您可以改用fwrite()。

10-07 23:12