2016-09-27 8 views
2

私は現在、ビデオセグメンテーションのプログラムをC++で作成しており、opencvを使用してフレーム単位でビデオフレームを読み込みたいと考えていました。 かなりうまく動作しているように見えましたが、画像を読み込んだり(書き込んだり)、少し変化がありました。 画像を読み書きする私のコードは、(私は通常、作成した画像行列で働き続けるが)以下の本質的である:OpenCV readビデオ/圧縮/変更のない画像

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」(または他のロスレスフォーマット)として保存するだけで済みます。