Bonjour,
Voilà , je développe avec une interface delphi qui utilise une dll en C faisant appel à la bibliothèque OpenCV de traitement d'images.
Quelqu'un peut me dire comment atteindre chaque pixel d'une image pour faire varier un des paramètres HSV ???
Suit ce que j'ai essayé de faire --> j'obtiens des résultats faux...
void cvModifImgHLS(
char *p_imgpath,
char *p_imgpathHLS,
int p_offsetH,
int p_offsetS,
int p_offsetV)
{
int i, j;
//compteurs pour balayages des pixels dans boucle
IplImage *cvImg;
//déclaration de l'img couleur RGB appelée initialement
IplImage *cvImgHLS;
//déclaration de l'img couleur HSV modifiée
cvImg = cvLoadImage( p_imgpath, 1);
//chargement de l'image couleur RGB dans cvImg
cvImgHLS = cvCreateImage(cvSize(768,576),
/*IPL_DEPTH_8U*/8, 3 );
//création de l'espace pour contenir l'image HSV modifiée
cvCvtColor( cvImg, cvImgHLS, CV_RGB2HSV );
//conversion RGB -> HLS
/*Modification des paramètres HLS (attribution des offset initialisés par les Trackbars de l'interface Delphi)*/
for(i=0; i<768; i++)
{
for(j=0; j<576; j++)
{
/* pour la composante H */
((uchar*)(cvImgHLS->imageData + cvImgHLS->widthStep*j))[i*3] =
((uchar*)(cvImg->imageData + cvImg->widthStep*j))[i*3] + p_offsetH;
/* pour la composante S */
((uchar*)(cvImgHLS->imageData + cvImgHLS->widthStep*j))[i*3+1] =
((uchar*)(cvImg->imageData + cvImg->widthStep*j))[i*3+1] + p_offsetS;
/* pour la composante V */
((uchar*)(cvImgHLS->imageData + cvImgHLS->widthStep*j))[i*3+2] =
((uchar*)(cvImg->imageData + cvImg->widthStep*j))[i*3+2] + p_offsetV;
}
/*Sauvegarde de l'image modifiée */
cvSaveImage(p_imgpathHLS,cvImgHLS);
}
... développeur d'occasion's' ...