2013-04-12 65 views
1

我想使用opencv cvSaveImage函數保存圖像。問題是我正在對圖像執行DCT,然後更改執行DCT之後獲得的係數,之後我正在執行逆DCT以恢復像素值。但是這次我得到了十進制的像素值(例如254.34576)。因此,當我使用cvSaveImage函數保存時,它會丟棄小數點後的所有值(例如,將254.34576保存爲254)並保存圖像。由於這個,我的結果受到影響。請幫助Opencv cvSaveImage

回答

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()來代替。