2011-08-29 4 views
6

merak ediyorum. Ben imwrite gerekenlere sadece 2 öğe içeren bir vektör (this discussion benzer) p, ancak beyan, ben arama yapabilirsiniz:Opencv (imwrite) üzerindeki görüntülerin sıkıştırılması. Sıkıştırma faktörünü nasıl belirlersiniz? bir kukla vektör bildirmek zorunda kalmadan OpenCV görüntüleri sıkıştırırken kolayca sıkıştırma faktörü belirtmek için bir yol olup olmadığını

vector<int> p; 
p[0] = CV_IMWRITE_JPEG_QUALITY; 
p[1] = 50; // compression factor 

imwrite("compressed.jpg", img, p); 

yukarıdaki eserleri iyi. Ancak, aynı görüntüyü bir döngüde birkaç sıkıştırma faktörü ile sıkıştırmak istiyorum. Parametreyi imdrite etmek için açıkça iletmenin bir yolu var mı? Bir şey gibi: Sadece bir yan not olarak

imwrite("compressed.jpg", img, {CV_IMWRITE_JPEG_QUALITY, factor}); // this doesn't work 

, fonksiyon başlığıdır:

bool imwrite(const string& filename, const Mat& img, const vector<int>& params=vector<int>()); 

teşekkürler!

Güncelleme: C++ 0x'yi etkinleştirdikten sonra, açıkça tanımlanmış bir satır içi işlevi işleve iletebilirim.

+1

C++ 11'iniz var mı? Eğer ++ 0x destek C olanak ise –

+0

gcc sürüm 4.5.2 –

+2

bir VM çalışıyorsa, 'std :: vektör ({1,2}) 'satır içi söyleyebiliriz. –

cevap

1

olarak C++ 0x beni açıkça işlevine satır içi tanımlanan bir vektör geçmesine izin verir aktive önerdi. Bu sorunu çözdü.