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 : 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
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;
 
}