Ask Your Question
0

opencv starting error

asked 2013-09-05 09:42:13 -0600

opencv1234 gravatar image

updated 2013-09-05 10:49:30 -0600

hello I get the error: the application failed to initialize properly (0xc0000005). Click on OK to terminate the application. when I start my program. my code:

#include "opencv/highgui.h"
#include "opencv/cv.h"

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

// Maths methods
#define max(a, b) ((a) > (b) ? (a) : (b))
#define min(a, b) ((a) < (b) ? (a) : (b))
#define abs(x) ((x) > 0 ? (x) : -(x))
#define sign(x) ((x) > 0 ? 1 : -1)

// Step mooving for object min & max
#define STEP_MIN 5
#define STEP_MAX 100

IplImage *image;

// Position of the object we overlay
CvPoint objectPos = cvPoint(-1, -1);
// Color tracked and our tolerance towards it
int h = 0, s = 0, v = 0, tolerance = 10;

/*
 * Transform the image into a two colored image, one color for the color we want to track, another color for the others colors
 * From this image, we get two datas : the number of pixel detected, and the center of gravity of these pixel
 */
CvPoint binarisation(IplImage* image, int *nbPixels) {

    int x, y;
    CvScalar pixel;
    IplImage *hsv, *mask;
    IplConvKernel *kernel;
    int sommeX = 0, sommeY = 0;
    *nbPixels = 0;

    // Create the mask &initialize it to white (no color detected)
    mask = cvCreateImage(cvGetSize(image), image->depth, 1);

    // Create the hsv image
    hsv = cvCloneImage(image);
    cvCvtColor(image, hsv, CV_BGR2HSV);

    // We create the mask
    cvInRangeS(hsv, cvScalar(h - tolerance -1, s - tolerance, 0), cvScalar(h + tolerance -1, s + tolerance, 255), mask);

    // Create kernels for the morphological operation
    kernel = cvCreateStructuringElementEx(5, 5, 2, 2, CV_SHAPE_ELLIPSE);

    // Morphological opening (inverse because we have white pixels on black background)
    cvDilate(mask, mask, kernel, 1);
    cvErode(mask, mask, kernel, 1);

    // We go through the mask to look for the tracked object and get its gravity center
    for(x = 0; x < mask->width; x++) {
        for(y = 0; y < mask->height; y++) {

            // If its a tracked pixel, count it to the center of gravity's calcul
            if(((uchar *)(mask->imageData + y*mask->widthStep))[x] == 255) {
                sommeX += x;
                sommeY += y;
                (*nbPixels)++;
            }
        }
    }

    // Show the result of the mask image
    cvShowImage("GeckoGeek Mask", mask);

    // We release the memory of kernels
    cvReleaseStructuringElement(&kernel);

    // We release the memory of the mask
    cvReleaseImage(&mask);
    // We release the memory of the hsv image
        cvReleaseImage(&hsv);

    // If there is no pixel, we return a center outside the image, else we return the center of gravity
    if(*nbPixels > 0)
        return cvPoint((int)(sommeX / (*nbPixels)), (int)(sommeY / (*nbPixels)));
    else
        return cvPoint(-1, -1);
}

/*
 * Add a circle on the video that fellow your colored object
 */
void addObjectToVideo(IplImage* image, CvPoint objectNextPos, int nbPixels) {

    int objectNextStepX, objectNextStepY;

    // Calculate circle next position (if there is enough pixels)
    if (nbPixels > 10) {

        // Reset position if no pixel were found
        if (objectPos.x == -1 || objectPos.y == -1) {
            objectPos.x = objectNextPos.x;
            objectPos.y = objectNextPos.y;
        }

        // Move step by step the object position to the desired position
        if (abs(objectPos.x - objectNextPos.x) > STEP_MIN) {
            objectNextStepX = max(STEP_MIN, min(STEP_MAX, abs(objectPos.x - objectNextPos.x) / 2));
            objectPos.x += (-1) * sign(objectPos.x - objectNextPos.x) * objectNextStepX;
        }
        if (abs(objectPos.y - objectNextPos.y) > STEP_MIN) {
            objectNextStepY = max(STEP_MIN, min ...
(more)
edit retag flag offensive close merge delete

4 answers

Sort by ยป oldest newest most voted
0

answered 2013-09-10 07:58:58 -0600

That error (0xc0000005) shows up, when you try to run 32/64 bit program with 64/32 bit libraries. Check your path variable or copy library files directly to the Release/Debug folder.

edit flag offensive delete link more
0

answered 2013-09-10 06:11:08 -0600

engine gravatar image

You can't just put 219 code lines and expect people to read it for you ! I just debugged you program I the error is clear you capture device is wrong capture = cvCreateCameraCapture(200); // you have to put for example 0 as an ID and your key variable isn't initialized I put int key =0 and the program will work

edit flag offensive delete link more
-1

answered 2013-09-10 05:36:56 -0600

opencv1234 gravatar image

can any help my

edit flag offensive delete link more
-1

answered 2013-09-07 10:38:54 -0600

opencv1234 gravatar image

anyone please

edit flag offensive delete link more

Question Tools

Stats

Asked: 2013-09-05 09:42:13 -0600

Seen: 744 times

Last updated: Sep 10 '13