2016-09-27 40 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”(或任何其他无损格式)。