Sorry, this content is no longer available

Ask Your Question
0

Problem opening then displaying AVI file

asked Aug 15 '13

khansen gravatar image

updated Aug 15 '13

Hello,

The program below is supposed to open an AVI file that is stored in the app directory then display it, but it's crashing when I run it. I'm new to C++ and OpenCV, this issue has been driving me mad all day, and I've looked all over the internet for a solution. Please help! I'm using OpenCV 2.4.6 with VS 2010 on a x64 machine.

This is the error I'm getting:

First-chance exception at 0x76daa048 (msvcrt.dll) in iotaCam4.exe: 0xC0000005: Access violation reading location 0x009907e0.
Unhandled exception at 0x76daa048 (msvcrt.dll) in iotaCam4.exe: 0xC0000005: Access violation reading location 0x009907e0.

The point at which the debugger places the break is at line 45 (bool bSuccess = cap.read(curVid);).

Code:

#define _CRT_SECURE_NO_DEPRECATE

#include <sstream>
#include <string>
#include <iostream>
#include <opencv\highgui.h>
#include <opencv\cv.h>
#include <vector>
#include <background_segm.hpp>
#include <opencv2/opencv.hpp>
#include <time.h>
#include <sys/types.h>
#include <sys/stat.h>

using namespace cv;
using namespace std;

int nmixtures = 2;
int bShadowDetection = 1;
int history = 2;

Mat oriImg;     // original still image from IP Cam
Mat curVid;     // live feed from IP Cam
Mat difImg;     // resultant image from background subtraction 

int main(int argc, char *argv[])
{
    // get cam feed and show in new window
    VideoCapture cap("1_2013-08-15_10-38-25.avi");
     if (!cap.isOpened())  // if not success, exit program
    {
         cout << "Cannot open the video file" << endl;
         return -1;
    }
    double dWidth = cap.get(CV_CAP_PROP_FRAME_WIDTH); //get the width of frames of the video
    double dHeight = cap.get(CV_CAP_PROP_FRAME_HEIGHT); //get the height of frames of the video
    cout << "Frame size : " << dWidth << " x " << dHeight << endl;
    namedWindow("Current Video", CV_WINDOW_AUTOSIZE);


    // show images in windows
    while(1)
    {
        // show camera feed
        bool bSuccess = cap.read(curVid); // read a new frame from video
        if (!bSuccess) //if not success, break loop
        {
            cout << "Cannot read a frame from video file" << endl;
            break;
        }
        imshow("Current Video", curVid);
        if (waitKey(30) == 27) //wait for 'esc' key press for 30ms. If 'esc' key is pressed, break loop
      {
            cout << "esc key is pressed by user" << endl;
            break; 
      }
    }

    return 0;
}

Here is the output and errors I get when debugging:

'iotaCam4.exe': Loaded 'C:\Users\khanse\Documents\Visual Studio 2010\Projects\iotaCam4\Debug\iotaCam4.exe', Symbols loaded.
'iotaCam4.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll', Symbols loaded (source information stripped).
'iotaCam4.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll', Symbols loaded (source information stripped).
'iotaCam4.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll', Symbols loaded (source information stripped).
'iotaCam4.exe': Loaded 'C:\Windows\SysWOW64\sysfer.dll', Cannot find or open the PDB file
'iotaCam4.exe': Loaded 'C:\opencv\build\x86\vc10\bin\opencv_core246d.dll', Cannot find or open the PDB file
'iotaCam4.exe': Loaded 'C:\Windows\SysWOW64\msvcp100d.dll', Symbols loaded.
'iotaCam4.exe': Loaded 'C:\Windows\SysWOW64\msvcr100d.dll', Symbols loaded.
'iotaCam4.exe': Loaded 'C:\opencv\build\x86\vc10\bin\opencv_highgui246d.dll', Cannot find or open the PDB file
'iotaCam4.exe': Loaded 'C:\Windows\SysWOW64\user32.dll', Symbols loaded (source information stripped).
'iotaCam4.exe': Loaded 'C:\Windows\SysWOW64\gdi32 ...
(more)
Preview: (hide)

1 answer

Sort by » oldest newest most voted
0

answered Aug 16 '13

According to this topic http://social.msdn.microsoft.com/Forums/vstudio/en-US/4b8ba632-e0aa-41f7-a651-b333aa7406c6/firstchance-exception-at-0x7c9194fe-ntdlldll-in-my-application-why it comes to мixing both the retail version of msvcr80.dll and the debug version msvcr80d.dll. Try to change from debug to release or vice-versa ;)

Preview: (hide)

Comments

I looked into that. Unfortunately, that's not my problem. OpenCV is hyper-specific about what AVI formats it supports. My uncompressed 24 bit RGB (RV24) coming out of iSpy didn't meet those specs.

http://opencv.willowgarage.com/wiki/VideoCodecs

khansen gravatar imagekhansen (Aug 16 '13)edit

Question Tools

Stats

Asked: Aug 15 '13

Seen: 1,979 times

Last updated: Aug 16 '13