2012-01-10 6 views
3

Есть ли способ показать IplImage в картинке?Как разместить Iplimage на картинке?

Я хотел бы не сохранять изображение и перезагружать его в картинный ящик, так как мне нужна моя программа, чтобы быть быстрой.

Я использую opencv 2.1 в C++. Я работаю с Visual Studio 2008. Спасибо.

ответ

3

Это уже обсуждалось here:

IplImage* img=cvLoadImage("sample.jpg",3); // for example 

HDC hdc = picturebox.GetDC()->m_hDC; 
char m_chBmpBuf[2048]; 
BITMAPINFO *m_pBmpInfo =0; 
m_pBmpInfo = (BITMAPINFO *)m_chBmpBuf; 
m_pBmpInfo->bmiHeader.biSize = sizeof(BITMAPINFOHEADER); 
m_pBmpInfo->bmiHeader.biWidth = img->width; 
m_pBmpInfo->bmiHeader.biHeight = -img->height; 
m_pBmpInfo->bmiHeader.biBitCount= 24; 

m_pBmpInfo->bmiHeader.biPlanes = 1; 
m_pBmpInfo->bmiHeader.biCompression = BI_RGB; 
m_pBmpInfo->bmiHeader.biSizeImage = 0; 
m_pBmpInfo->bmiHeader.biXPelsPerMeter = 0; 
m_pBmpInfo->bmiHeader.biYPelsPerMeter = 0; 
m_pBmpInfo->bmiHeader.biClrUsed = 0; 
m_pBmpInfo->bmiHeader.biClrImportant = 0; 

StretchDIBits(hdc, 0, 0, img->width, img->height, 
        0, 0, img->width, img->height, 
        img->imageData, m_pBmpInfo, 
        DIB_RGB_COLORS, SRCCOPY); 
+0

Как я люблю Google! – karlphillip

+0

извините, но он не работает. HDC hdc = picturebox.GetDC() -> m_hDC; Я не могу сделать это в C++, я пробовал этот способ HANDLE handle = (HANDLE) this-> PbBoxImg-> Handle.ToPointer(); // ToInt32(); \t \t HWND hWnd = (HWND) & рукоятка; теперь я не получаю ошибок, но ничего не отображается в окне изображения \t \t HDC hdc1 = GetDC (hWnd); – andrea

+0

Я посмотрю в выходные дни. Сейчас у меня нет Windows. – karlphillip

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