Преобразование IplImage в JPG реализуется с помощью процедуры cvEncodeImage - на выходе получаем полностью готовый JPG - со всеми атрибутами и мета-информацией.
Обратная процедура делается с помощью функции cvDecodeImage
Официальная документация н...Пример, но для древнего opencv
Мой код для кодирования в JPG - к сожалению обратной процедуры не нашёл, но главное - понять JPG картинки передаются через CvMat структуры, главные поля которой - data.ptr и cols
#define MAX_JPEG_IMAGE_SIZE 1000000
int jpeg_params[] = { CV_IMWRITE_JPEG_QUALITY, 50, 0 };
CvMat* encodedMat;
IplImage* frame = 0;
CvCapture *capture;
int image_length;
unsigned char jpeg_image[MAX_JPEG_IMAGE_SIZE];
{
cvWaitKey(100);
frame = cvQueryFrame(capture);
if (frame == NULL) {
printf("ERROR %s() Can't query frame from camera.\n", __FUNCTION__);
break;
}
encodedMat = cvEncodeImage(".jpeg", frame, jpeg_params);
if (encodedMat == NULL) {
printf("ERROR %s() Can't encode frame.\n", __FUNCTION__);
break;
}
if (encodedMat->cols > MAX_JPEG_IMAGE_SIZE) {
printf("ERROR %s() Size of encoded image (%d) exceeded maximum buffer size (%d).\n",
__FUNCTION__, encodedMat->cols, MAX_JPEG_IMAGE_SIZE);
break;
}
image_length = encodedMat->cols;
memcpy(jpeg_image, encodedMat->data.ptr, image_length);
cvReleaseMat(&encodedMat);
}