2013-10-24 2 views
0

openCV Mat 파일을 GDI + BitMap 이미지로 변환하고 싶습니다. 이 작업을 수행하는 방법에 대한 정보를 찾을 수 없습니까?opencv 매트 이미지를 gdi 비트 맵으로 변환하는 방법

내가이 일을 더 똑 바른 방법이 없다 생각하지만, 나는 그것이 파일에 쓰고 다시 읽는 관여하지 않습니다 희망 (http://opencv-users.1802565.n2.nabble.com/Convert-IplImage-to-Bitmap-td3784378.html)

나는 이와 같은 뭔가를 작성해야합니다 :

#include <windows.h> 
#include <gdiplus.h> 
#include <stdio.h> 
using namespace Gdiplus; 

Bitmap GetBitMap(cv::Mat inputImage) 
{ 
    Bitmap bitmap; 
    // convert inputImage to bitmap?? 
    return bitmap; 
} 
+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

관련 문제