2010-11-21 7 views
3

Est-il possible d'enregistrer une image dans une chaîne au lieu d'un fichier avec OpenCV?Image au format JPEG OpenCV

J'ai trouvé que cette fonction dans la documentation:

int cvSaveImage(const char* filename, const CvArr* image) 

Et il ne peut enregistrer les fichiers.

+0

Que voulez-vous dire en enregistrant une image en tant que chaîne? –

+1

Je veux dire ne pas enregistrer dans un fichier mais enregistrer dans la variable char * à la place, par exemple. –

+0

Vous pouvez utiliser la bibliothèque JPEG pour compresser imageData. –

Répondre

1

Comment voulez-vous coder l'image dans la chaîne?
Vous pourriez simplement stocker des valeurs rouges, vertes, bleues comme des chaînes séparées par des virgules, mais coder l'image binaire comme quelque chose comme base64 serait plus compact.

Edit: si vous voulez dire un format jpeq en mémoire voir - OpenCV to use in memory buffers or file pointers

+0

Eh bien, je veux une image enregistrée au format JPEG, mais pas de fichier mais de chaîne. –

+0

Je sais que je pourrais l'enregistrer dans un fichier, puis le charger à partir de ce fichier, mais je ne veux pas stocker l'image du tout. Je veux l'envoyer par wifi à un autre PC. –

+0

http://stackoverflow.com/questions/801199/opencv-to-use-in-memory-buffers-or-file-pointers –

1

Peut-être que vous pouvez simplement créer un char * tampon et copiez votre structure de données IplImage il? Mais attention, vous devez soigneusement copier les variables de pointeur, telles que imageData, imageDataOrigin et ainsi de suite. Donc, l'idée est de tout mettre dans votre tampon de la façon dont vous pouvez le décoder du côté du récepteur.

Et OpenCV est une bibliothèque opensource et vous pouvez simplement copier le corps de la fonction savefile du OpenCV, en remplaçant l'écriture dans un fichier à écrire dans votre tampon

+0

J'ai une image BGR dans mon buffer et je veux la transformer en JPEG. –

+0

La transformation devrait également être dans une fonction savefile – Andrew

Questions connexes