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 106 107 108 109 110 111
| #include <iostream>
#include <myconio.h>
#include <windows.h>
#define N 10
int couleur [4] = {15,7,8,0};
using namespace std;
void textattr(int _attr) {
SetConsoleTextAttribute (GetStdHandle(STD_OUTPUT_HANDLE), _attr);
}
void textbackground(int _color) {
CONSOLE_SCREEN_BUFFER_INFO Info ;
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &Info) ;
textattr((Info.wAttributes & 0x0F) | (_color<<4));
}
void gotoxy(int x, int y) {
COORD c ;
c.X = x - 1;
c.Y = y - 1;
SetConsoleCursorPosition (GetStdHandle(STD_OUTPUT_HANDLE), c);
}
// fonction calcul luminositÈ
int calculLuminosite (int image[N][N]){
float total=0; float lumi=0;
for (int i=0 ;i<N ;i++){
for (int j=0 ;j<N ;j++){
total=total+image[i][j];
}
}
textbackground(0);
cout<<total;
lumi=total/100;
cout<<lumi;
return lumi;
}
//procÈdure affichage image
void afficheImage (int image[N][N], int x){
for (int i=0 ;i<N ;i++){
for (int j=0 ;j<N ;j++){
gotoxy(x+i,j+20);
textbackground(couleur[image[i][j]]);cout<<" ";
}
}
}
// procÈdure d'accentuation du contraste
void accentueContraste (int image[N][N]){
float lumix;
lumix=calculLuminosite(image);
for (int i=0 ;i<N ;i++){
for (int j=0 ;j<N ;j++){
if(image[i][j]>lumix||(image[i][j])<3 || (image[i][j])!=3){
(image[i][j])++;
}else {if((image[i][j])>0 || (image[i][j])<lumix|| (image[i][j])!=0){
(image[i][j])--;
}
}
}
}
}
//fonction saisie
int saisie (int x, int y) {
int val;
do {
gotoxy(x, y); cout<<" ";
gotoxy(x, y); val=getche() ;
}while(val<48 || val>51) ;
return (val-48);
}
void saisieMatrice (int image[N][N]){
gotoxy(1,1); cout<< "Saisie de la matrice (valeurs 0 blanc, 1 gris clair, 2 gris foncÈ ou 3 noir) :" ;
//affichage des points pour montrer o˘ se fait la saisie
for (int x=0 ;x<N ; x++){
for(int y=0 ;y<N ; y++) {
gotoxy(x*3+1, y+2) ; cout<< "." ;
}
}
//saisie
for (int x=0; x<N; x++){
for(int y=0 ;y<N ; y++) {
image[x][y]=saisie(x*3+1, y+2) ;
}
}
}
int main(){
//dÈclarations
int image[N][N];
//saisie de la matrice d'origine
saisieMatrice(image);
//Affichage de l'image
afficheImage(image,1);
//accentuation du contraste
accentueContraste(image);
//affichage de l'image
afficheImage(image,N+10);
return 0;
} |
Partager