OpenCV vs. "Picture Control" (MFC)
Nov 12, 2010 at 7:49am Nov 12, 2010 at 7:49am UTC
Hi all,
I want to display my IplImages in a "Picture Control" in MFC. I get these images from a camera in a callback-function.
The mainproblem is,that when I display my pictures all controls of my MFC-Dialog are not working. The whole application crashed, but the images are working fine...
Here is my Code, where I display my Images. This function is called in an infinityloop:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23
void CTZG01_GUIDlg::showpics(unsigned short *pic)
{
if (pic != NULL)
{
unsigned char row=0,column=0;
CBitmap *cbmp;
IplImage* simg = cvCreateImage(cvSize(176,144),IPL_DEPTH_16U,1);
CvScalar s;
int bfcnt=0;
for (row=0;row<144;row++)
{
for (column=0;column<176;column++)
{
s.val[0]=pic[bfcnt];
cvSet2D(simg,row,column,s);
bfcnt++;
}
}
cbmp = IplImageToCBitmap(simg);
picint.SetBitmap(*cbmp);
cvReleaseImage( &simg );
}
}
An here, where I convert an IplImage to a CBitmap:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21
CBitmap* IplImageToCBitmap(IplImage* img)
{
CDC dc;
CDC memDC;
if (!dc.CreateDC(L"DISPLAY" , NULL, NULL, NULL))
return NULL;
if (!memDC.CreateCompatibleDC(&dc))
return NULL;
CBitmap* bmp = new CBitmap();
CBitmap* pOldBitmap;
bmp->CreateCompatibleBitmap(&dc, img->width, img->height);
pOldBitmap = memDC.SelectObject(bmp);
CvvImage cvImage; // Undocumented class
cvImage.CopyOf(img);
cvImage.Show(memDC.m_hDC, 0, 0, img->width, img->height, 0, 0);
cvImage.Destroy();
memDC.SelectObject(pOldBitmap);
memDC.DeleteDC();
dc.DeleteDC();
return bmp;
}
Best regards
Topic archived. No new replies allowed.