2016-08-31 3 views
0

Ich habe eine image.bmp und ich möchte es in img.jpg konvertieren. Aber ich möchte in der Lage sein, die Parameter des JPG-Bildes zu ändern, zum Beispiel die Gammakorrektur. Wie kann ich das in C++ machen, vielleicht mit opencv oder imagemagick?Convert BMP zu LINEAR JPEG in C++

Ich habe bereits versucht mit der CImage Klasse, aber wenn ich das Bild von BMP in JPG konvertieren, ist es zu klein (von 80MB bis 2MB) und ich verliere eine Menge Informationen. Deshalb möchte ich die Parameter steuern können.

Dank

+1

See Erics ausgezeichnete Antwort, mit Code http://stackoverflow.com/a/39233320/2836621 –

+0

@MarkSetchell so soll ich die Gamma-Funktion auf der bmp Bild anwenden und es dann als jpg schreiben? – dasada

+0

Ich nehme an - ich habe keine Ahnung, wie dein Bild aussieht, noch was du zu erreichen versuchst und warum du denkst, dass CImg nicht funktioniert ... –

Antwort

0

ImageMagick hat C++ API Magick++ genannt. Verwenden Sie die Klasse Magick::Image für die Bildbearbeitung, z. Die Gammakorrektur kann über die Methode image.gamma(1.0); erfolgen. Die Methode image.magick("JPEG") setzt das Ausgabeformat auf JPEG. Für weitere Details siehe Image++ Proben.

int main(int argc,char **argv) 
{ 
    InitializeMagick(*argv); 

    Image image("picture.bmp"); 

    // Do your transformation on 'image' here  

    image.magick("JPEG") 
    image.write("converted.jpg"); 

    return 0; 
}