Как преобразовать OpenCV IplImage в SDL_Surface?

Все, что нужно вашей функции edit, - это принять другой аргумент, который изменит отредактированный элемент:

edit :: Int -> (a -> a) -> [a] -> Maybe [a]
edit 0 f (a:as) = Just (f a : as)
edit n (a:as) = do
    let x = n - 1
    y <- x `seq` edit x f as
    return (a:y)
edit _ [] = Nothing
6
задан sgielen 27 December 2008 в 21:03
поделиться

2 ответа

Хорошо, я получил его работа!

Я думаю, что был смущен тем, что глубина OpenCV 8 означает, что пиксель имеет 8 битов за канал, таким образом, в изображении с 3 каналами, пиксель имеет 24 бита. Таким образом, при преобразовании этого в значение SDL глубины, мы добираемся 8 * 3 = 24 биты.

Изображение составляло 24 бита, в конце концов, которые поддерживает SDL. Так преобразование изображения к SDL так же просто как:

SDL_Surface *surface = SDL_CreateRGBSurfaceFrom((void*)opencvimg->imageData,
                opencvimg->width,
                opencvimg->height,
                opencvimg->depth*opencvimg->nChannels,
                opencvimg->widthStep,
                0xff0000, 0x00ff00, 0x0000ff, 0
                );
return surface;

Извините за беспорядок я надеюсь, что это помогает кому-либо ищущему тот же ответ.

Другие интересные ссылки: http://www.libsdl.org/cgi/docwiki.cgi/Pixel_Access
И полная подпрограмма в: http://paster.dazjorz.com/?p=3714

11
ответ дан 8 December 2019 в 17:28
поделиться

First of all: Thanks!!

Second: It works perfectly with 3 Channel images but I want to display a Single-Channel-IplImage

so there we go:

SDL_Surface *single_channel_ipl_to_surface (IplImage *opencvimg)
{
    SDL_Surface *surface = SDL_CreateRGBSurfaceFrom((void*)opencvimg->imageData,
                           opencvimg->width,
                           opencvimg->height,
                           opencvimg->depth*opencvimg->nChannels,
                           opencvimg->widthStep,
                           0xffffff, 0xffffff, 0xffffff,0);
    return surface;
}
3
ответ дан 8 December 2019 в 17:28
поделиться
Другие вопросы по тегам:

Похожие вопросы: