ºÇ½ª¹¹¿·¡§ id_livedoooor 2011ǯ04·î10Æü(Æü) 17:00:25ÍúÎò
OpenCV¤ÎIplImage¤òWin32API¤Ç»È¤¨¤ë¤è¤¦¤ËBMP(DIB)¤ØÊÑ´¹¤·¤Æɽ¼¨¤¹¤ë¡¥
¥½¡¼¥¹¥Õ¥¡¥¤¥ë
IplImage¤«¤éDIB¤ØÊÑ´¹¤¹¤ë´Ø¿ô¤òºî¤ë¡¥
ÊÑ¿ô¤òÍÑ°Õ¤¹¤ë¡¥
¤É¤³¤«¤ÇIplImage¤ò¥í¡¼¥É¤·¤Æ¡¤DIB¤ØÊÑ´¹¤¹¤ë¡¥
WM_PAINT¥á¥Ã¥»¡¼¥¸¤¬Á÷¤é¤ì¤Æ¤¤¿¤éStretchDIBits¤Çɽ¼¨¤¹¤ë¡¥
¥½¡¼¥¹¥Õ¥¡¥¤¥ë
IplImage¤«¤éDIB¤ØÊÑ´¹¤¹¤ë´Ø¿ô¤òºî¤ë¡¥
°ú¿ô | ÀâÌÀ |
const IplImage* srcIplImage | ÊÑ´¹¸µ¤ÎIplImage |
BITMAPINFO& bmpInfo | BITMAPINFO¹½Â¤ÂÎ |
unsigned long* bmpData | ¼ÂºÝ¤Î²èÁü¥Ç¡¼¥¿ |
//IplImage ¤«¤éBMP(DIB)¤ØÊÑ´¹¤¹¤ë¡¥ void iplTobmp(const IplImage* srcIplImage, BITMAPINFO& bmpInfo, unsigned long* bmpData) { int width = srcIplImage->width; int height = srcIplImage->height; ZeroMemory(&bmpInfo, sizeof(bmpInfo)); bmpInfo.bmiHeader.biSize = sizeof(BITMAPINFOHEADER); bmpInfo.bmiHeader.biWidth = width; bmpInfo.bmiHeader.biHeight = height; bmpInfo.bmiHeader.biPlanes = 1; bmpInfo.bmiHeader.biBitCount = 32; bmpInfo.bmiHeader.biCompression = BI_RGB; unsigned long pixel; unsigned char r, g, b; for(int i = 0; i < height; i++){ for(int j = 0; j < width; j++){ b = srcIplImage->imageData[srcIplImage->widthStep * i + j * 3]; g = srcIplImage->imageData[srcIplImage->widthStep * i + j * 3 + 1]; r = srcIplImage->imageData[srcIplImage->widthStep * i + j * 3 + 2]; pixel = 0x00000000; pixel = (r << 16) + (g << 8) + b; bmpData[j + (height-i-1) * width ] = pixel; } } }
ÊÑ¿ô¤òÍÑ°Õ¤¹¤ë¡¥
IplImage* imgFromOpenCV; BITMAPINFO bmpInfo; unsigned long* bmpData;
¤É¤³¤«¤ÇIplImage¤ò¥í¡¼¥É¤·¤Æ¡¤DIB¤ØÊÑ´¹¤¹¤ë¡¥
//OpenCV¤Ç¥í¡¼¥É imgFromOpenCV = cvLoadImage("testimg.jpg", CV_LOAD_IMAGE_COLOR); //¥á¥â¥ê¤ò³ÎÊÝ bmpData = (LPDWORD)HeapAlloc(GetProcessHeap(), HEAP_ZERO_MEMORY, imgFromOpenCV->width * imgFromOpenCV->height * 4); //iplImage¤«¤éDIB¤ØÊÑ´¹ iplTobmp(imgFromOpenCV, bmpInfo, bmpData);
WM_PAINT¥á¥Ã¥»¡¼¥¸¤¬Á÷¤é¤ì¤Æ¤¤¿¤éStretchDIBits¤Çɽ¼¨¤¹¤ë¡¥
case WM_PAINT: //²èÁü¤òɽ¼¨ StretchDIBits( hDC, 0, 0, imgFromOpenCV->width, imgFromOpenCV->height, 0, 0, imgFromOpenCV->width, imgFromOpenCV->height, bmpData, &bmpInfo, DIB_RGB_COLORS, SRCCOPY); break;
- ¥«¥Æ¥´¥ê¡§
- ³ØÌ䡦Íý·Ï
- Áí¹ç
¥¿¥°
¥³¥á¥ó¥È¤ò¤«¤¯