Reduire la taille de l'image par 2 [Résolu]

cs_mano972 7 Messages postés dimanche 13 mars 2011Date d'inscription 26 avril 2011 Dernière intervention - 22 avril 2011 à 20:19 - Dernière réponse : cs_mano972 7 Messages postés dimanche 13 mars 2011Date d'inscription 26 avril 2011 Dernière intervention
- 26 avril 2011 à 11:46
Bonjour c'est assez urgent, je bloque pour un fonction qui est de réduire la taille de l'image par 2.
Je vous montre ceux que j'ai déjà fais.
    unsigned short int x,y;                // variables d'itération
   	float valeur;
   	unsigned short int Largeur;
    unsigned short int Hauteur;
   	string Fichiers,Fichierss,ligne;
    t_image ppm;
cout << "Entrer le nom de l'image ";
cin >>Fichiers;

        ifstream fichier(Fichiers.c_str());		// ouverture du fichier en lecture
 	if(fichier)  // si l'ouverture a réussi
        {            //on recupere les information du fichier(hauteur,largeur etc..)
                    getline(fichier,ligne);
                    ppm.chaine1=ligne;
                    getline(fichier,ligne);
                    ppm.chaine2=ligne;
                    fichier>>ppm.largeur;
                    Largeur=ppm.largeur;
                    fichier>>ppm.hauteur;
                    Hauteur=ppm.hauteur;
                    fichier>>ppm.valmax;
            	for( y=0; y>valeur;
                       ppm.pixel[x][y].r=valeur;
                        fichier>>valeur;
                       ppm.pixel[x][y].v=valeur;
                        fichier>>valeur;
                       ppm.pixel[x][y].b=valeur;
    }
       }
      cout <<"\n" << "Lecture de l'image terminee !\n" ;
      fichier.close();
        }
         else
         {
        cerr << "le fichier est introuvable !" << endl;
}
cout<<"enregistrer en quel nom"<< endl;
cin >> Fichierss;
ofstream fichiers(Fichierss.c_str());  //déclaration du flux et ouverture du fichier
if(fichiers)  // si l'ouverture a réussi
        {            // instruction,les variale que je vais mettre dans le "fichiers"
        fichiers<<ppm.chaine1<<endl;
        fichiers<<ppm.chaine2<<endl;
        fichiers<<ppm.largeur<<endl;
        fichiers<<ppm.hauteur<<endl;
        fichiers<<ppm.valmax<<endl;
for (y = 0; y < ppm.hauteur; y++)
  	{
    	for (x = 0; x < ppm.largeur; x++)
      	{                                                                           // ici le code concernant le traitement d'images
         fichiers<<ppm.pixel[x][y].r<<endl;
         fichiers<<ppm.pixel[x][y].v<<endl;
         fichiers<<ppm.pixel[x][y].b<<endl;
         
     }
        }
fichiers.close();   // on referme le fichier
        }
          else
                      cerr << "Desole, mais le fichier ne peut etre ouvert en ecriture..." << endl;
      }


J'ai tenté de divisé par 2 le ppm.largeur et le ppm.hauteur , sa marche mais le résultat donné n'est pas ceux que je voulais car au final l'image ne ressemble a rien, j'aimerais garder les même proportion. J'ai essayé de cherché sur internet mais je ne comprenais pas.
Donc comment puis je manipulé les variables.Merci.
Afficher la suite 

Votre réponse

4 réponses

Meilleure réponse
Pistol_Pete 1055 Messages postés samedi 2 octobre 2004Date d'inscription 9 juillet 2013 Dernière intervention - 26 avril 2011 à 11:17
3
Merci
Salut,
Si tu divises par 2 la largeur et la longueur de ton image, tu garderas les mêmes proportions...
Il suffit donc d’écrire un pixel sur deux en x et en y...

fichiers<<ppm.chaine1<<endl;
fichiers<<ppm.chaine2<<endl;
fichiers<<ppm.largeur/2<<endl;
fichiers<<ppm.hauteur/2<<endl;
fichiers<<ppm.valmax<<endl;
for (y = 0; y < ppm.hauteur; y+=2)
{
for (x = 0; x < ppm.largeur; x+=2)
{ // ici le code concernant le traitement d'images
fichiers<<ppm.pixel[x][y].r<<endl;
fichiers<<ppm.pixel[x][y].v<<endl;
fichiers<<ppm.pixel[x][y].b<<endl;

}
}
fichiers.close(); // on referme le fichier

A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.

Merci Pistol_Pete 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 118 internautes ce mois-ci

Commenter la réponse de Pistol_Pete
cs_mano972 7 Messages postés dimanche 13 mars 2011Date d'inscription 26 avril 2011 Dernière intervention - 25 avril 2011 à 18:39
0
Merci
up
Commenter la réponse de cs_mano972
Pistol_Pete 1055 Messages postés samedi 2 octobre 2004Date d'inscription 9 juillet 2013 Dernière intervention - 26 avril 2011 à 11:18
0
Merci
Si tu veux faire des interpolation bilinéaire, regarde dans mes sources...
A+

____________________________________________________________________________
Logiciel en traitement de l'image gratuit et open source.
Commenter la réponse de Pistol_Pete
cs_mano972 7 Messages postés dimanche 13 mars 2011Date d'inscription 26 avril 2011 Dernière intervention - 26 avril 2011 à 11:46
0
Merci
Merci sa marche
Commenter la réponse de cs_mano972

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.