Salut,
j'ai essayé de calculer une image de différence C à partir de deux images A et B. Mais lorsque j'essaie de retrouver l'image B elle s'affiche avec les pixels de différence de A.
Bon vous dites que c'est normal, mais qu'est ce que vous suggérez comme solution ?
Merci bien.
Voilà l'algorithme de calcul d'image de différence:
Code C : 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 for ( x = 0; x < A->Width; x++ ) { for ( y = 0; y < A->Height; y++ ) { NT++;// nombre total des pixels Color pixelColorA = A->GetPixel( x, y ); Color pixelColorB = B->GetPixel( x, y ); if (pixelColorA != pixelColorB) { NM++;// compteur de tous les pixels modifiés rouge = std::abs(pixelColorA.R - pixelColorB.R); vert = std::abs(pixelColorA.G - pixelColorB.G); bleu = std::abs(pixelColorA.B - pixelColorB.B); Color newColor = Color::FromArgb(rouge, vert, bleu ); C->SetPixel( x, y, newColor ); } } }
et celui de restitution de l'image B:
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 for ( x = 0; x < A->Width; x++ ) { for ( y = 0; y < A->Height; y++ ) { Color pixelColorA = A->GetPixel( x, y ); Color pixelColorC = C->GetPixel( x, y ); rouge = std::abs(pixelColorA.R - pixelColorC.R); vert = std::abs(pixelColorA.G - pixelColorC.G); bleu = std::abs(pixelColorA.B - pixelColorC.B); Color newColor1 = Color::FromArgb(rouge, vert, bleu); D->SetPixel( x, y, newColor1 ); } }
Partager