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
| #include <iostream>
#include <QString>
#include <QImage>
#include <QColor>
#include <QMessageBox>
#include <QApplication>
int main(int argc, char* argv[])
{
int r, g, b; //couleur de reference
int rn, gn, bn; //couleur de notre image en cour
int rdif, gdif, bdif; //différence entre nos couleur de départ et les nouvelle
int i, j, x; //i et j servent au boucle, x compte le nombre de passage dans la boucle
int longueur, largeur; //taille de notre image
QImage* image; //notre image
QString nom; //variable servant a loader les images
QRgb color; //sert a recuperer la couleure d'un pixel
QApplication app(argc, argv);
/*on recupere la premiere image. Permettre plus tard a l'utilisateur de donner le nom via une interface */
nom = "DSCF2430.JPG";
image = new QImage(nom);
/************************************
taille d'images fixées en dur. A automatiser
************************************/
largeur = 3072;
longueur = 2304;
/*on calcul nos moyenne de r,g,b*/
r = 0;
g = 0;
b = 0;
x=0;
for(i=0;i<largeur/2; i=i+50)
{
color = image->pixel(i,i);
r = r + qRed(color);
g = g + qGreen(color);
b = b + qBlue(color);
x++;
}
r = r/x;
g = g/x;
b = b/x;
/**************************
on load notre deuxieme image...
a transformer en boucle plus tard pour faire toute les images du dossier
*****************************/
nom = "DSCF2429.JPG";
image->load(nom);
//on calcul la moyenne de la deuxieme image
rn = 0;
gn = 0;
bn = 0;
x=0;
for(i=0;i<largeur/2; i=i+50)
{
color = image->pixel(i,i);
rn = rn + qRed(color);
gn = gn + qGreen(color);
bn = bn + qBlue(color);
x++;
}
rn = rn/x;
gn = gn/x;
bn = bn/x;
/***********************************
on calcul les différences
***********************************/
rdif = r - rn;
gdif = g - gn;
bdif = b - bn;
QMessageBox::information(NULL,"deplacement", QString::number(rdif));
//on modifie la deuxieme image en fonction de nos variables dif
for(i=0;i<largeur;i++)
{
for(j=0;j<longueur;j++)
{
color = image->pixel(i,j); //on recupere la couleur du pixel a mosifier
color = qRgb(qRed(color)+rdif, qGreen(color)+gdif, qBlue(color)+bdif);
image->setPixel(i,j,color);
}
}
QMessageBox::information(NULL,"deplacement", "on va sauvegarder");
//on sauvegarde l'image
image->save(nom);
QMessageBox::information(NULL,"deplacement", "j'ai fini");
return app.exec();
} |
Partager