How to open next/prev image with key pg dn/pg up

asked 2014-01-08 15:10:41 -0600

updated 2014-01-08 15:12:52 -0600

berak gravatar image

Hi everyone, I have a question for you. I do simple application in MFC and OpenCV 2.0 that will perform a 3D reconstruction from several images. Each image represents the same object from different angles, this images are together in some folder, like My Pictures etc. I draw points on each image, that points represent the x,y coordinates that will be used later. When I open image in my application from some folder and select the points, I don't know how to open next image that comes in that folder. If I open the first image and select the points, how to open second image and select points on it, then comes third picture etc. I use switch case function, key pg dn is for next image, pg up is for previous image. Does anyone have an idea? Please help me. Here is a code, from CFileDialog:

void CMyApp::OnImageOpen()
{
CFileDialog dlg(TRUE, _T("*.bmp"), "mPath", OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,
"Image files (*.bmp; *.jpg; *.pgm; *.png) |*.bmp;*.jpg;*.pgm;*.png |All Files (*.*)|*.*||",NULL);
dlg.m_ofn.lpstrTitle = _T("Select Image");
    if (dlg.DoModal() == IDOK)
    { 
        CString path = dlg.GetPathName();
        CString mPath = path.Mid(path.GetLength()-9,5);
        char *FileName = (char *)LPCSTR (path);
        int len = strlen(FileName);
        sscanf(FileName+len-9, "%d", &iImage);
        //sprintf(FileName+len-9, "%05d",iImage+1);

        IplImage *image; 
        image = cvLoadImage(path);
        strcpy(window_name, path);
        cvNamedWindow(window_name,0);
        cvShowImage(window_name, image);
        cvResizeWindow(window_name,800,600);
        cvSetMouseCallback(window_name,my_mouse_callback,(void*) image);
        bool bContinue = true;
        while(bContinue)
        {
            int key = cvWaitKey();

            bContinue = (key != 27);

            switch(key){
            case 0x00220000:

                                // PgDn

                                  break;

            case 0x00210000:

                                // PgUp

                break;
            }
        }
edit retag flag offensive close merge delete