2016-09-27 78 views
2

我目前正在寫一個視頻分割programm在C++,並希望閱讀一幀視頻幀使用opencv。 雖然它看起來工作得很好,但我在閱讀(和寫作)圖像時發現了一些細微的變化。 我的代碼讀取和寫入圖像實質上包含以下(雖然我通常保持與所創建的圖像矩陣工作):OpenCV閱讀視頻/圖像沒有壓縮/變化

Videocapture cap = VideoCapture(filename); 
int counter = 0; 
while(1) { 
    Mat tmp; 
    cap >> tmp; 
    if(tmp.empty()) { 
    //cout << "scanned all frames" << endl; 
    break; 
    } 
    //save frames as jpeg 
    stringstream filename; 
    filename << "original" << counter; 
    counter++; 
} 

該代碼會工作相當精細,但顏色卻有些細微的變化發生,我想消除這一點。 這是源圖像(放大): https://picload.org/image/rdddagor/source.png

這是創建一個(也放大): https://picload.org/image/rdddagir/opencv.png

有沒有一種方法,以保持原始圖像質量?

+0

您是否將圖像保存爲jpeg? – Miki

+1

哦,你說得對。愚蠢的我。 不幸的是,這意味着我的代碼中有其他地方出現錯誤(但與此問題沒有任何關係)。 感謝您的幫助! – NilusvanEdel

回答

0

正如@Miki所說的,我只需要將圖像保存爲「.png」(或任何其他無損格式)。