Mi chiedevo se esiste un modo per specificare facilmente il fattore di compressione durante la compressione delle immagini su opencv senza dover dichiarare un vettore fittizio. Se dichiaro un vettore p (simile a this discussion), ma contenenti solo 2 elementi, che è ciò imwrite prende, posso effettuare la chiamata:Compressione delle immagini su opencv (scrittura). Come impostare in modo esplicito il fattore di compressione?
vector<int> p;
p[0] = CV_IMWRITE_JPEG_QUALITY;
p[1] = 50; // compression factor
imwrite("compressed.jpg", img, p);
Detti lavori bene. Tuttavia, voglio comprimere la stessa immagine con diversi fattori di compressione in un ciclo. C'è un modo per passare in modo esplicito il parametro a imwrite? Qualcosa di simile:
imwrite("compressed.jpg", img, {CV_IMWRITE_JPEG_QUALITY, factor}); // this doesn't work
Come nota a margine, l'intestazione funzione è:
bool imwrite(const string& filename, const Mat& img, const vector<int>& params=vector<int>());
Grazie!
Aggiornamento: Dopo aver attivato C++ 0x, posso passare un vettore esplicitamente definito in linea alla funzione.
Hai C++ 11? –
Questo è in esecuzione su una VM con gcc versione 4.5.2 –
Se si abilita il supporto C++ 0x, si può dire 'std :: vector ({1,2})' in linea. –