web-dev-qa-db-fra.com

python compression jpeg OpenCV en mémoire

Dans OpenCV, il est possible d'enregistrer une image sur le disque avec une certaine compression jpeg. Existe-t-il également un moyen de le faire en mémoire? Ou dois-je écrire une fonction en utilisant cv2.imsave() qui charge le fichier et le supprime à nouveau du disque? Si quelqu'un connaît un meilleur moyen, c'est bien aussi.

Le cas d'utilisation est l'augmentation des données en temps réel. Utiliser autre chose qu'OpenCV entraînerait des frais généraux éventuellement inutiles.

Exemple de fonction souhaitée im = cv2.imjpgcompress(90)

13
Simon

Vous pouvez utiliser imencode:

encode_param = [int(cv2.IMWRITE_JPEG_QUALITY), 90]
result, encimg = cv2.imencode('.jpg', img, encode_param)

(La valeur par défaut pour IMWRITE_JPEG_QUALITY est 95.)

Vous pouvez le décoder à nouveau avec:

decimg = cv2.imdecode(encimg, 1)

Extrait de ici

31
Miki