Как быстро конвертировать IplImage (OpenCV) в ALLEGRO_BITMAP (A5)? - PullRequest
1 голос
/ 03 октября 2011

Есть ли самый быстрый способ преобразовать тип IplImage из OpenCV в тип ALLEGRO_BITMAP из Allegro 5.0.x, чем просто переводить каждый пиксель из одного в другой?

Как 2 для таких циклов:

void iplImageToBitmap(IplImage *source, ALLEGRO_BITMAP* dest) {
    if(source!= NULL && dest!= NULL) {
        al_set_target_bitmap(dest);
        int height = source->height;
        int width = source->width;
        int x,y;

        for( y=0; y < height ; y++ ) {
            uchar* ptr = (uchar*) (
                source->imageData + y * source->widthStep
                );
            for( x=0; x < width; x++ ) {
                al_put_pixel(x,y,al_map_rgb(ptr[3*x+2],ptr[3*x+1],ptr[3*x]));
            }
        }
    }
}

1 Ответ

2 голосов
/ 03 октября 2011

Используйте al_lock_bitmap, чтобы получить ALLEGRO_LOCKED_REGION, затем установите данные пикселей, как описано.Затем разблокируйте его с помощью al_unlock_bitmap.

...