Bonjour,
J'essaye d’exécuter un code sous visual studio 2010 en c++ en utilisant la lib OpenCV.
Le code semble bon, lorsque je génère le projet, je n'obtient aucune erreur, je lance donc la compilation et l’exécution. Mais j’obtiens immédiatement un message d'erreur :
"Exception non gérée à 0x000000013faf16bd dans Opencvtest.exe*: 0xC0000005: Violation d'accès lors de l'écriture à l'emplacement 0x0000000000000000."

Voici mon code:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
//Include
#include <iostream>
#include <string>
#include <cstdio>
#include <cstdlib>
#include <math.h>
#include <vector>
#include <stdio.h>
#include <opencv2/highgui/highgui.hpp>
 
using namespace std;
using namespace cv;
 
//Macro
#ifndef M_PI
   #define M_PI 3.14159265358979323846
#endif
 
//Proto
Mat dirac (Mat_<uchar>,int);
 
int main ()
{
	Mat_<uchar> img = imread("C:/img.jpg",0);
	Mat_<uchar> img2 = dirac(img,150);
 
   // Affichage de l'image img 2
   namedWindow ("img2", CV_WINDOW_AUTOSIZE);
   imshow ("img2", img2);
 
 
	return EXIT_SUCCESS;
}
 
 
Mat dirac (Mat_<uchar> x, int sigma)
{
 
	int row = x.rows;
	int col = x.cols;
	Mat_<uchar> f;
	for (int i=0; i<row; i++)
		{
			for (int j=0; j<col; j++)
			{
				if (x(i,j)<=sigma && x(i,j)>=-sigma)
				{f(i,j)=(1/(2*sigma))*(1+cos(M_PI*x(i,j)/sigma));}
				else
				{f(i,j)=0;}
			};
		}
	return f;
}
D'où pourrais venir le problème?
Merci d’avance.

EDIT: Je voudrais également savoir si la manière de déclarer les matrices ainsi que le remplissage des matrices dans la double boucle for est correct?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
 
Mat evolution(Mat_<uchar> u0, Mat_<uchar> g, int lambda, int mu, int alf, int delt, int epsilon, int numIter)
	{
        //Déclaration des matrices
	int row = u0.rows;
	int col = u0.cols;
	Mat_<uchar> u(row,col);
	Mat_<uchar> vx(row,col);
	Mat_<uchar> vy(row,col);
	Mat_<uchar> ux(row,col);
 
 
        ... Instructions ...
        for (int i = 0; i < row; i++)
		{
			for (int j = 0; j< col; j++)
				{
					normDu(i,j)=sqrtf((int)ux(i,j)*(int)ux(i,j)+(int)uy(i,j)*(int)uy(i,j)+1e-10);
					Nx(i,j)=(int)ux(i,j)/(int)normDu(i,j);
					Ny(i,j)=(int)uy(i,j)/(int)normDu(i,j);
 
				}
		}
        ... Instructions...
        }