Bonjour a tous. svp,si quelqu'un peut m'aider j'ai ecris un code en c++utilisant opencv ,et j'ai affronte un probleme : lorsque je fais genere mon programe ,la generation donne :1 reussi ,0 echoue ,donc c'est bon mais lorsque je fais Deboguer :il ouvre une fenetre noire qui dit: Assertion failed :<unsigned>row && <unsigned >col < <unsigned>mat->cols,filec:\program files \opencv\cxcore\include\cxtypes.h,line 668 et une autre fenetre :Microsoft Visual c++ Debug Library Program:..Mes documents\visual Studio 2008\Projects\AA\Debug\AA.exe This application has requested the runtime to terminate it in an unsual way,Please contact the application support team for more information. et voici une partie du code qui a provoque ce probleme : #include "stdafx.h" #include "cv.h" #include "cxcore.h" #include "highgui.h" #include <math.h> #include <iostream> #include <vector> #include "stdlib.h" #include <stdio.h> using namespace std; double gauss(double x,double s) {
for(i=1;i<=size;i++) for(j=1;j<=size;j++) { u[0]=i-halfsize-1; u[1]=j-halfsize-1; val=gauss(u[0],sigma)*dgauss(u[1],sigma); valpos=abs(val); cout<<val; //on a rempi la matrice directement avec les valeurs positives cvmSet(H,i,j,valpos); // cout<<t; }
cvWaitKey(100); return 0; } et j'ai verifie que la cause de ce probleme est cette ligne:cvmSet(H,i,j,valpos); Donc comment faire? si quelqu'un peut m'aider . Et un Grand Merci d'avance.
Marsh Posté le 02-04-2009 à 14:32:27
Bonjour a tous.
svp,si quelqu'un peut m'aider
j'ai ecris un code en c++utilisant opencv ,et j'ai affronte un probleme :
lorsque je fais genere mon programe ,la generation donne :1 reussi ,0 echoue ,donc c'est bon
mais lorsque je fais Deboguer :il ouvre une fenetre noire qui dit:
Assertion failed :<unsigned>row && <unsigned >col < <unsigned>mat->cols,filec:\program files \opencv\cxcore\include\cxtypes.h,line 668
et une autre fenetre :Microsoft Visual c++ Debug Library
Program:..Mes documents\visual Studio 2008\Projects\AA\Debug\AA.exe
This application has requested the runtime to terminate it in an unsual way,Please contact the application support team
for more information.
et voici une partie du code qui a provoque ce probleme :
#include "stdafx.h"
#include "cv.h"
#include "cxcore.h"
#include "highgui.h"
#include <math.h>
#include <iostream>
#include <vector>
#include "stdlib.h"
#include <stdio.h>
using namespace std;
double gauss(double x,double s)
{
double a=pow(x,2);
double b=2*pow(s,2);
double c=s*sqrt(2*3.14);
double e=exp(-a/b);
double y=e/c;
return y;
}
double dgauss(double x,double s)
{
double d=(-x*gauss(x,s))/pow(s,2);
return d;
}
double gauss2D(double x,double y,double s)
{ double r=sqrt(pow(x,2)+pow(y,2));
return gauss(r,s);
}
int _tmain(int argc, _TCHAR* argv[])
{IplImage* image=0;
image=cvLoadImage("C:\img.PNG",0);
cvNamedWindow("Image:", 1 );
cvShowImage( "Image:", image );
if(!image) return -1;
IplImage* destgx = cvCloneImage( image );
IplImage* destgy = cvCloneImage( image );
IplImage* destggx = cvCloneImage( image );
IplImage* destggy = cvCloneImage( image );
IplImage* destgg2 = cvCloneImage( image );
IplImage* destg4 = cvCloneImage( image );
int i;
int j;
int k;
int l;
double u[2];
double pixelcarre;
double size;
double sigma=0.5;
double sigmaT=0.5;
double halfsize;
double val;
double valpos;
double t;
double dd,r;
double somme=0;
halfsize=2;
size = 2*halfsize+1;
CvMat* H = cvCreateMat(size,size,CV_32FC1);
for(i=1;i<=size;i++)
for(j=1;j<=size;j++)
{ u[0]=i-halfsize-1;
u[1]=j-halfsize-1;
val=gauss(u[0],sigma)*dgauss(u[1],sigma);
valpos=abs(val);
cout<<val;
//on a rempi la matrice directement avec les valeurs positives
cvmSet(H,i,j,valpos);
// cout<<t;
}
cvWaitKey(100);
return 0;
}
et j'ai verifie que la cause de ce probleme est cette ligne:cvmSet(H,i,j,valpos);
Donc comment faire? si quelqu'un peut m'aider .
Et un Grand Merci d'avance.