OpenCV vs. "Picture Control" (MFC)

Nov 12, 2010 at 7:49am
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.