2013-10-24 6 views
0

Я хочу преобразовать файл OpenCV Mat в изображение GDI + BitMap. Я не могу найти информацию о том, как это сделать?Как преобразовать изображение opencv mat в gmi bitmap

Я думаю, что нет прямого способа сделать это, но я надеюсь, что он не участвует в написании его в файл и чтении назад (http://opencv-users.1802565.n2.nabble.com/Convert-IplImage-to-Bitmap-td3784378.html)

мне нужно написать что-то такое, как это:

+0

Вопросы, связанные с проблемами с кодом, который вы написали, должны описывать конкретную проблему - и включать в себя действительный код для ее воспроизведения - в самом вопросе. См. Руководство SSCCE.org. –

+0

@JohnDibling: Добавлен пример кода. Надеюсь, он объяснит, что я пытаюсь сделать. – mans

+0

я написал класс CGdiPlus, который делает именно то, что вам нужно: http://stackoverflow.com/questions/24725155/opencv-tesseract-how-to-replace-libpng-libtiff-etc-with-gdi-bitmap -load в – Elmue

ответ

1

Согласно documentation, представляется, что Bitmap имеет конструктор, который использует предварительно выделенный буфер памяти. С помощью этого конструктора, ваша функция может выглядеть следующим образом:

Bitmap GetBitMap(cv::Mat inputImage) 
{ 
    cv::Size size = inputImage.size(); 
    Bitmap bitmap(size.width, size.height, inputImage.step1(), PixelFormat24bppRGB, inputImage.data); 
    return bitmap; 
} 

Советуйте, что Bitmap вернулся из вашей функции не управляет памятью вы инициализировать его. Таким образом, убедитесь, что данные изображения сохраняются в течение всего времени работы Bitmap.

+0

Я не уверен, что он работает, когда изображение OpenCv не продолжается? – mans

+0

Да, это, вероятно, правильно. – Aurelius

+0

Что такое? Код или мой комментарий? – mans

Смежные вопросы