Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

opencv_world300.dll CRASH MSVC++ 2013

Hello, I have decided to use OpenCV in my project to detect objects. After 3 days of troubleshooting problems in the Installation, Configuration of OpenCV in Microsoft Visual Studio, I finally managed to get the Display Image program working.
The problem starts now. I tried running the sample objectdetect.cpp(copied the source code from here to main.cpp in my project) program already provided in opencv sample. I put the xml files for detection with the main.cpp file in my project. I get a APPCRASH error with the cause opencv_world300.dll.

Environment Details:
OpenCV version: 3.0.0
Build target platform: x64
OS: Win7-x64
Visual Studio 2013

I am using pre built libraries in build/x64/vc12/bin/*.dll. I have only referenced the opencv_world300.lib/opencv_world300.dll. These are combined libs of all others. I have followed the configuration settings as described in various tutorials around the web.
I have included the project as an attachment. To be able to successfully able to run the project on your PC, you must have opencv extracted in C:/ and I have provided a OpenCV_x64_config.props property sheet. Copy this file to Microsoft Visual Studio/project directory. Rest everything should hopefully work without any change. Also, I have checked the Microsoft Symbol Server import option. Without it, the project won't work.
Here is the download link:
http://www.datafilehost.com/d/fdb0935a

Problem Description:
The program starts with successfully detecting the WebCam. and calling the detectAndDisplay() method. The problem is in the implementation of this method that my program crashes. Here is the main.cpp file for your reference:
I am a complete Newbie to OpenCV. Please help me!

#include "opencv2/objdetect.hpp"
#include "opencv2/videoio.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"

#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

/** Function Headers */
void detectAndDisplay(Mat frame);

/** Global variables */
String face_cascade_name = "haarcascade_frontalface_alt.xml";
String eyes_cascade_name = "haarcascade_eye_tree_eyeglasses.xml";
CascadeClassifier face_cascade;
CascadeClassifier eyes_cascade;
String window_name = "Capture - Face detection";

/** @function main */
int main(void)
{
    VideoCapture capture;
    Mat frame;

    //-- 1. Load the cascades
    if (!face_cascade.load(face_cascade_name)){ printf("--(!)Error loading face cascade\n"); return -1; };
    if (!eyes_cascade.load(eyes_cascade_name)){ printf("--(!)Error loading eyes cascade\n"); return -1; };

    //-- 2. Read the video stream
    capture.open(0);
    if (!capture.isOpened()) { printf("--(!)Error opening video capture\n"); return -1; }

    while (capture.read(frame))
    {
        if (frame.empty())
        {
            printf(" --(!) No captured frame -- Break!");
            break;
        }

        //-- 3. Apply the classifier to the frame
        detectAndDisplay(frame);

        int c = waitKey(10);
        if ((char)c == 27) { break; } // escape
    }
    return 0;
}

/** @function detectAndDisplay */
void detectAndDisplay(Mat frame)
{
    std::vector<Rect> faces;
    Mat frame_gray;

    cvtColor(frame, frame_gray, COLOR_BGR2GRAY);
    equalizeHist(frame_gray, frame_gray);

    //-- Detect faces
    face_cascade.detectMultiScale(frame_gray, faces, 1.1, 2, 0 | CASCADE_SCALE_IMAGE, Size(30, 30));

    for (size_t i = 0; i < faces.size(); i++)
    {
        Point center(faces[i].x + faces[i].width / 2, faces[i].y + faces[i].height / 2);
        ellipse(frame, center, Size(faces[i].width / 2, faces[i].height / 2), 0, 0, 360, Scalar(255, 0, 255), 4, 8, 0);

        Mat faceROI = frame_gray(faces[i]);
        std::vector<Rect> eyes;
        cout << "Hello";
        //-- In each face, detect eyes
        eyes_cascade.detectMultiScale(faceROI, eyes, 1.1, 2, 0 | CASCADE_SCALE_IMAGE, Size(30, 30));

        for (size_t j = 0; j < eyes.size(); j++)
        {
            Point eye_center(faces[i].x + eyes[j].x + eyes[j].width / 2, faces[i].y + eyes[j].y + eyes[j].height / 2);
            int radius = cvRound((eyes[j].width + eyes[j].height)*0.25);
            circle(frame, eye_center, radius, Scalar(255, 0, 0), 4, 8, 0);
        }
    }
    //-- Show what you got
    imshow(window_name, frame);
}

opencv_world300.dll CRASH MSVC++ 2013

Hello, I have decided to use OpenCV in my project to detect objects. After 3 days of troubleshooting problems in the Installation, Configuration of OpenCV in Microsoft Visual Studio, I finally managed to get the Display Image program working.
The problem starts now. I tried running the sample objectdetect.cpp(copied the source code from here to main.cpp in my project) program already provided in opencv sample. I put the xml files for detection with the main.cpp file in my project. I get a APPCRASH error with the cause opencv_world300.dll.

Environment Details:
OpenCV version: 3.0.0
Build target platform: x64
OS: Win7-x64
Visual Studio 2013

I am using pre built libraries in build/x64/vc12/bin/*.dll. I have only referenced the opencv_world300.lib/opencv_world300.dll. These are combined libs of all others. I have followed the configuration settings as described in various tutorials around the web.
I have included the project as an attachment. To be able to successfully able to run the project on your PC, you must have opencv extracted in C:/ and I have provided a OpenCV_x64_config.props property sheet. Copy this file to Microsoft Visual Studio/project directory. Rest everything should hopefully work without any change. Also, I have checked the Microsoft Symbol Server import option. Without it, the project won't work.
Here is the download link:
http://www.datafilehost.com/d/fdb0935a

Problem Description:
The program starts with successfully detecting the WebCam. and calling the detectAndDisplay() method. The problem is in the implementation of this method that my program crashes. Here is the main.cpp file for your reference:
I am a complete Newbie to OpenCV. Please help me!

#include "opencv2/objdetect.hpp"
#include "opencv2/videoio.hpp"
#include "opencv2/highgui.hpp"
#include "opencv2/imgproc.hpp"

#include <iostream>
#include <stdio.h>

using namespace std;
using namespace cv;

/** Function Headers */
void detectAndDisplay(Mat frame);

/** Global variables */
String face_cascade_name = "haarcascade_frontalface_alt.xml";
String eyes_cascade_name = "haarcascade_eye_tree_eyeglasses.xml";
CascadeClassifier face_cascade;
CascadeClassifier eyes_cascade;
String window_name = "Capture - Face detection";

/** @function main */
int main(void)
{
    VideoCapture capture;
    Mat frame;

    //-- 1. Load the cascades
    if (!face_cascade.load(face_cascade_name)){ printf("--(!)Error loading face cascade\n"); return -1; };
    if (!eyes_cascade.load(eyes_cascade_name)){ printf("--(!)Error loading eyes cascade\n"); return -1; };

    //-- 2. Read the video stream
    capture.open(0);
    if (!capture.isOpened()) { printf("--(!)Error opening video capture\n"); return -1; }

    while (capture.read(frame))
    {
        if (frame.empty())
        {
            printf(" --(!) No captured frame -- Break!");
            break;
        }

        //-- 3. Apply the classifier to the frame
        detectAndDisplay(frame);

        int c = waitKey(10);
        if ((char)c == 27) { break; } // escape
    }
    return 0;
}

/** @function detectAndDisplay */
void detectAndDisplay(Mat frame)
{
    std::vector<Rect> faces;
    Mat frame_gray;

    cvtColor(frame, frame_gray, COLOR_BGR2GRAY);
    equalizeHist(frame_gray, frame_gray);

    //-- Detect faces
    face_cascade.detectMultiScale(frame_gray, faces, 1.1, 2, 0 | CASCADE_SCALE_IMAGE, Size(30, 30));

    for (size_t i = 0; i < faces.size(); i++)
    {
        Point center(faces[i].x + faces[i].width / 2, faces[i].y + faces[i].height / 2);
        ellipse(frame, center, Size(faces[i].width / 2, faces[i].height / 2), 0, 0, 360, Scalar(255, 0, 255), 4, 8, 0);

        Mat faceROI = frame_gray(faces[i]);
        std::vector<Rect> eyes;
        cout << "Hello";
        //-- In each face, detect eyes
        eyes_cascade.detectMultiScale(faceROI, eyes, 1.1, 2, 0 | CASCADE_SCALE_IMAGE, Size(30, 30));

        for (size_t j = 0; j < eyes.size(); j++)
        {
            Point eye_center(faces[i].x + eyes[j].x + eyes[j].width / 2, faces[i].y + eyes[j].y + eyes[j].height / 2);
            int radius = cvRound((eyes[j].width + eyes[j].height)*0.25);
            circle(frame, eye_center, radius, Scalar(255, 0, 0), 4, 8, 0);
        }
    }
    //-- Show what you got
    imshow(window_name, frame);
}