Komprimieren IplImage zu JPEG mit libjpeg in OpenCV

Also ich habe dieses problem.
Ich habe ein IplImage, die ich komprimieren will, um JPEG-und tun etwas mit ihm. Ich libjpeg verwenden.
Ich fand viele Antworten, wie "Lesen durch Beispiele und Google docs" und so und das getan hat. Und erfolgreich geschrieben eine Funktion für, die.

FILE* convert2jpeg(IplImage* frame) 
{
FILE* outstream = NULL;
outstream=malloc(frame->imageSize*frame->nChannels*sizeof(char))

unsigned char *outdata = (uchar *) frame->imageData;
struct jpeg_error_mgr jerr;
struct jpeg_compress_struct cinfo;
int row_stride;
JSAMPROW row_ptr[1];

jpeg_create_compress(&cinfo);
jpeg_stdio_dest(&cinfo, outstream);

cinfo.image_width = frame->width;
cinfo.image_height = frame->height;
cinfo.input_components = frame->nChannels;
cinfo.in_color_space = JCS_RGB;

jpeg_set_defaults(&cinfo);
jpeg_start_compress(&cinfo, TRUE);
row_stride = frame->width * frame->nChannels;

while (cinfo.next_scanline < cinfo.image_height) {
    row_ptr[0] = &outdata[cinfo.next_scanline * row_stride];
    jpeg_write_scanlines(&cinfo, row_ptr, 1);
}

jpeg_finish_compress(&cinfo);
jpeg_destroy_compress(&cinfo);

return outstream;
}

Diese Funktion ist jetzt direkt aus den Beispielen (mit Ausnahme des Teils der allokierung von Speicher, aber ich brauche, da bin ich nicht writnig in eine Datei), aber es funktioniert immer noch nicht.
Sie stirbt auf jpeg_start_compress(&cinfo, TRUE); Teil?

Kann jemand helfen?

InformationsquelleAutor | 2009-09-18

Schreibe einen Kommentar