Dégradé de couleur

Fermé
nathan - Modifié par Chris 94 le 7/03/2015 à 17:29
julienccmarche Messages postés 30 Date d'inscription samedi 7 mars 2015 Statut Membre Dernière intervention 6 avril 2015 - 11 mars 2015 à 18:56
Bonjour,

je dois faire un dégradé de couleur rouge sur 512*512 pixels. Or, le programme que j'ai réalisé fait deux dégradés de couleur rouge, or j'en voudrais qu'un seul. Pouvez vous m'aider? par avance, je vous en remercie!!

ps: j'utilise la librairie Opencv!


#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>
#include <iostream>

using namespace std;
using namespace cv;

int i, ;

main( int argc, char* argv[])
{
 Mat imagesrc = Mat::zeros(512, 512, CV_8UC3);  
 MatIterator_<Vec3b> it,end ;

 for( it = imagesrc.begin<Vec3b>(), end = imagesrc.end<Vec3b>(); it != end; ++it)
 {
                {




                    (*it)[0] = 0;   
                    (*it)[1] = 0;   
                    (*it)[2] = i;


           i = i+1; 
                }
 if (i==512) i = 0;      
 }
cv::imwrite("c:\image3.jpg", imagesrc);   


 namedWindow( "Display window", CV_WINDOW_AUTOSIZE );
 imshow( "Display window", imagesrc );

 waitKey(0);
 return 0;                                                         

}

1 réponse

Salut, si il a un constructeur initialisateur, il ne peut pas s'appeler Mat::zeros, donc a mon avis imagesrc a été crée avec le constructeur par défaut , avec les paramètres par défaut (autre que 512*512, CV_8UC3, sauf hazard monstrueux)
0
julienccmarche Messages postés 30 Date d'inscription samedi 7 mars 2015 Statut Membre Dernière intervention 6 avril 2015 5
8 mars 2015 à 22:48
Bonjour,
merci de ta réponse. En fait je sais juste programmer en c mais mon prof nous dit que toute les fonctions en c++ étaient donnée. Il fallait modifier le 256 par 512.
Mon programme me créé une image avec deux dégradés dedans. j'ai demandé alors à mon prof et il m'a dit, qu'il fallait mettre une dégradation de couleur pour deux pixels pour obtenir un seul dégradé. J'ai alors essayé de mettre une une boucle for mais cela ne marche pas....

Comment je peut faire?

Merci d'avance
0
julienccmarche Messages postés 30 Date d'inscription samedi 7 mars 2015 Statut Membre Dernière intervention 6 avril 2015 5
8 mars 2015 à 22:50
Ps, entre temps, je me suis inscrit donc mon nom de profil a changé...
0
en effet dans du 8bit lorsque tu depasses 255 ça repart à 0,
Ya beaucoup de façon de faire, le plus simple:

for (int position=0;position < fin-1; position++)
{
a[position]=i;
a[position+1]=i;
i++;
}

Personellement je prefere me baser sur une formule mathematique, en partant d'un produit en croix...
0
julienccmarche Messages postés 30 Date d'inscription samedi 7 mars 2015 Statut Membre Dernière intervention 6 avril 2015 5
11 mars 2015 à 18:56
bonsoir


merci de ta réponse, je regarde ça tout de suite!
0