mon prog ne boucle pas et ne donne pas de résultat
Bonjour,
Mon programme doit calculer deux surfaces, ensuit pour la plus petite surface il doit faire un zoom en réduisant la largeur jusqu’à ce que la surface petite soit égale a l'autre surface.
Pour le moment il ne boule pas et ne me donne pas de résultat.
Aider moi svp.
Main.cpp :
Code:
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 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105
| #include <highgui.h>
#include <cv.h>
#include <cxcore.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <iostream>
#include "cvaux.h"
#include "highgui.h"
#include <ctype.h>
#include <math.h>
#include <string.h>
#define CV_MAT_ELEM_CN( mat,elemtype,row,col) (*(elemtype*)((mat).data.ptr + (size_t)(mat).step*(row) + sizeof(elemtype)*(col)))
using namespace std;
int calcul_surf(IplImage *pic)
{
int n=pic->height;
int m=pic->width;
int tab[n][m];//creer une matrice de meme taille que notre image
CvScalar pixel;
int i=0;
int j=0;
for(int i=0; i<pic->height; i++)
{
for(int j=0; j<pic->width; j++)
{ pixel = cvGet2D(pic, i, j);//elle recupere le pixel de l image
if ((pixel.val[0]==0)&&(pixel.val[1]==0)&&(pixel.val[2]==0))
{tab[i][j]=1;}
if ((pixel.val[0]==255)&&(pixel.val[1]==255)&&(pixel.val[2]==255))
{tab[i][j]=0;}
}
}
//on calcule la surface de l image a partire avoir calculer la somme des 1 de la matrice
int s=0;
for(int i=0; i<pic->height; i++)
{
for(int j=0; j<pic->width; j++)
{if (tab[i][j]==0) s++;}
}
int k=(pic->height*pic->width)-s;
return k;
}
int main()
{
int s1,s2;
IplImage *img1=NULL;
IplImage *img2=NULL;
IplImage *pic=NULL;
img1=cvLoadImage("C:/Users/ATHMANE/Desktop/chien-05.bmp");
img2=cvLoadImage("C:/Users/ATHMANE/Desktop/chien-01.bmp");
double larg1=img1->width;
int haut1=img1->height;
double larg2=img2->width;
int haut2=img2->height;
//On calcul la surface de nos deux images
s1=calcul_surf(img1);
s2=calcul_surf(img2);
cout << s1 << endl;
cout<<endl;
cout << s2 << endl;
if(s1<s2)
{while(s1<s2){
while(s1<s2)
{pic= cvCreateImage(cvSize(larg2,(haut1/larg1)*larg2), img1->depth,img1->nChannels);
cvResize(img1,pic, CV_INTER_LINEAR);
larg2=larg2+((larg2*5)/100);
s1=calcul_surf(img1);
break;
}}
}
else
{
while(s2<s1)
{pic= cvCreateImage(cvSize(larg1,(haut2/larg2)*larg1), img2->depth,img2->nChannels);
cvResize(img2,pic, CV_INTER_LINEAR);
s2=calcul_surf(pic);
larg1=larg1+((larg1*5)/100);
}
}
cout << s2 << endl;
cout<<endl;
cout << s1 << endl;
cout<<endl;
} |