我正在尝试使用opencv cvSaveImage函数保存图像。问题是我在图像上执行DCT,然后改变执行DCT后获得的系数,之后我执行逆DCT以获取像素值。但是这次我得到的像素值是十进制的(例如254.34576)。因此,当我使用cvSaveImage函数保存它时,它会丢弃小数点后的所有值(例如,将254.34576保存为254)并保存图像。由于这个原因,我的结果受到影响。请帮忙
答案 0 :(得分: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));
和相应的镜像功能进行阅读。
P.S。清晨,如果fprintf使用二进制文件,我不记得我的生活。但是你明白了。你可以改用fwrite()。