Accueil > Forum > > > > changer paramètres HSV des pixels d'une image
changer paramètres HSV des pixels d'une image
mercredi 27 juillet 2005 à 09:36:49 |
changer paramètres HSV des pixels d'une image

yac_yac
|
 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);
} //////////////////////////////
void cvConvRGB_HSV (float Red, float Green, float Blue)//change en : H:[0-255] S:[0-255] V:[0-255]
{
float hue, saturation, value;
float maxcolor, mincolor;
Red = Red/256;
Green = Green/256;
Blue = Blue/256;
maxcolor = MAX(Red, MAX(Green, Blue));
mincolor = MIN(Red, MIN(Green, Blue));
/* value */
value = maxcolor;
/* saturation */
if(maxcolor == 0)
saturation = 0;
else
saturation = (maxcolor - mincolor) / maxcolor;
/* hue */
if(saturation == 0) {
hue = 0;
} else {
if(Red == maxcolor)
hue = (Green - Blue) / (maxcolor-mincolor);
else if(Green == maxcolor)
hue = 2.0 + (Blue - Red) / (maxcolor - mincolor);
else
hue = 4.0 + (Red - Green) / (maxcolor - mincolor);
if(hue > 1)
hue /= 6.0;
if(hue < 0)
hue++;
}
Red = ( int)(hue * 255.0); //correspond en réalité à H,S,V
Green = ( int)(saturation * 255.0);
Blue = ( int)(value * 255.0);
} ... développeur d'occasion's' ...
|
|
mercredi 27 juillet 2005 à 09:49:29 |
Re : changer paramètres HSV des pixels d'une image

buno
|
Attention!!
Quand tu utilises la structure IPL, tu peux lui spécifier l'origine du
repère image. Par défaut, me semble-t-il, l'origine se trouve en bas à
gauche. Pour être plus clair:
Voici ta matrice de pixel avec l'origine indiquée par 'O':
X X X X X
X X X X X
X X X X X
X X X X X
O X X X X
Buno ---------------------------------------- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
mercredi 27 juillet 2005 à 10:57:18 |
Re : changer paramètres HSV des pixels d'une image

yac_yac
|
Je ne comprend pas très bien, l'important n'est-il pas de balayer tous les pixels d'une image (ici 768*576). Si je fais varier le paramètre H par exemple sur toute l'image, je rajoute le même offset H pour chaque pixel ; l'image résultante ne dépend pas de la façon dont j'ai parcouru les pixels. Cela dit, merci beaucoup, je n'avais en effet pas à l'ésprit que l'origine du repère était en bas à gauche par défaut...
Si tu as d'autres pistes, je suis preneur car je suis vraiment à la bourre là (pour être honnête, j'ai 32h pour résoudre le pb).... yac. I
... développeur d'occasion's' ...
|
|
mercredi 27 juillet 2005 à 11:04:06 |
Re : changer paramètres HSV des pixels d'une image

buno
|
Ok! Désolé pour le couop de l'origine mais je me suis fait avoir donc je te préviens...
Sinon, je sais que quand j'accédais "moi-même" aux valeurs des pixels (imageData[...]), ça foirait à tous les coups!!
Voici quelques pistes:
- prends garde à utiliser image->widthStep plutôt que
image->width dans les boucles de parcours d'images car les pixels
ont été alignés
- regarde les fonctions cvCopy() et cvSet()
Buno ---------------------------------------- L'urgent est fait, l'impossible est en cours. Pour les miracles, prévoir un délai...
|
|
mercredi 27 juillet 2005 à 12:22:42 |
Re : changer paramètres HSV des pixels d'une image

Urgo
|
BITMAP EN GRAYSCALE (WIN32):
http://www.cppfrance.com/code.aspx?ID=32603
Cette source déposée récemment par moi-même parcours tous les pixels
d'une image et applique des coefficients pour la mettre en N&B...
Je pense qu'elle t'aidera en dernier recours.
Ciao
Urgo
|
|
Cette discussion est classée dans : red, green, cvimg, cvimghls, maxcolor
Répondre à ce message
Sujets en rapport avec ce message
ASCII-Navigation par fleche [ par Twinuts ]
Salut a tous,j'ai un souci avec les touches directionnelles du clavier, en gros c'est la premiere fois que je les utilise et je ne vois pas pourquoi c
pb creation ou utilisation OCX [ par hilairenicolas ]
Bonjour à tous, j'ai crée un OCX en VC++ dans le but de l'utiliser depuis un programme visual basic.Et j'ai un pb que je n'arrive pas à résoudre :J'in
Algo Morphing...Grrrrr [ par AlexMAN ]
Bonjour, Voila, j'ai codé un "algo" morphing, mais il est assez lent, et pas parametrable (jn'ai aucun moyen de savoir combien de fois je dois appeler
Equivalent de WinIoControl sous W2K ? [ par G0ss3Yn ]
Salut tout le monde, j'ai besoin de l'équivalent de la fonction WinIoControl pour Win2K.Je sais que cette fonction fonctionne déjà sous Win2k mais ell
Shellcode, pb adresse dans DLL [ par G0ss3Yn ]
Salut !J'ai écrit un petit prog vulnérable tout simple. Un BOF est fait puis une adresse est passée à la fin du buffer. Cette adresse écrase correctem
arbre 4-aire [ par professeurr ]
Salut,Quelqu'un pourrait me founir la méthode de la définition d'une sctructure (struc) en C d'un arbre 4-aire ou a un tuto référant à cette structure
Documentation sur les OS [ par manta7 ]
Bonjour à tous, quelqu'un pourrait-il me donner l'adrsesse d'un site ou d'un document qui explique l'architecture d'un os, ses fonctions etc ...Merci
Patron de classe et precompilation [ par popi0016 ]
Bonjour, j'essaie de programmer avec Builder6 (Borland) mes 1ers patrons de classe. Malgre bien avoir suivit mon tutorial le compilateur refuse la com
Lire un fichier en C [ par Angelotus ]
Bonjour,Je suis étudiante (1ère année) en ingénierie informatique.J'aurais besoin d'écrire un programme en C qui ouvre un fichier et affiche ce qu'il
Programmer une imprimante [ par phenix5515 ]
Je dois programmer une imprimante de type SATO CL408 en C pour imprimer des étiquettes de nomenclatures.
Livres en rapport
|
Derniers Blogs
IMAGINE CUP 2012, MAKE A SIGN EN FINALEIMAGINE CUP 2012, MAKE A SIGN EN FINALE par junarnoalg
Voilà qui est fait, la nouvelle est officielle ! L'équipe belge "Make a Sign" va au pays des kangourous défendre son projet dans la catégorie Software Design. http://www.imaginecup.com/CompetitionsContent/Competition/WorldwideFinalists.aspx V...
Cliquez pour lire la suite de l'article par junarnoalg KINECT 1.5 IS OUT !KINECT 1.5 IS OUT ! par Vko
La version 1.5 du Kinect For Microsoft vient tout juste de sortir ! Plein de nouveautés: Tracking de squelette en Near Mode Détection en position assise Détection faciale avec un SDK dédié Documentation et des guideline (enfin) Un out...
Cliquez pour lire la suite de l'article par Vko LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) LES ACTUALITéS DE LA SEMAINE SUR C2I.FR (14 MAI - 20 MAI) par richardc
Mise à jour des Web API du 14 Mai
Réservez dès maintenant votre journée du 20 juin pour le Windows Azure Dev Camp 2012 à Paris
Mise à jour de Team Foundation Service
MechCommander 2 sur Windows 8
Entity Framework 5 Release Candidate e...
Cliquez pour lire la suite de l'article par richardc REACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITERREACTIVE EXTENSIONS : CONSOMMER DES SERVICES AVEC RX PARTIE 3, LES PIèGES à éVITER par Groc
Une mauvaise utilisation de rx lors de l'écriture d'une couche d'accès à des services peut conduire à des cas embarassants avec des erreurs mal gérées, des appels qui ne partent lorsqu'ils le devraient, et même des résultats incorrects . le tout nuis...
Cliquez pour lire la suite de l'article par Groc SHAREPOINT BLOG SITE, PROBLèME D'ARCHIVESSHAREPOINT BLOG SITE, PROBLèME D'ARCHIVES par junarnoalg
Dernièrement, nous avons migré le site
myTIC
vers un nouveau serveur SharePoint 2010. Dans les contenus que nous vouloins récupérer, nous avions un certain nombre de blogs.
Nous avons utilisé les commandes Power...
Cliquez pour lire la suite de l'article par junarnoalg
Logiciels
sDEVIS-FACTURES vlPRO (8.1.0.3)SDEVIS-FACTURES VLPRO (8.1.0.3)sDEVIS-FACTURES vlPRO a été mis au point pour les particuliers, créateurs, entrepreneurs, artisa... Cliquez pour télécharger sDEVIS-FACTURES vlPRO 974 Application Server (12.2.4.6)974 APPLICATION SERVER (12.2.4.6)Développez de puissantes applications dans un environnement de 'cloud computing', clusterisé, séc... Cliquez pour télécharger 974 Application Server vPicture (1.4.2.1)VPICTURE (1.4.2.1)Avec vPicture, hébergez vos images facilement et rapidement.
vPicture est un utilitaire simple, ... Cliquez pour télécharger vPicture Easy-Planning (2.2.1.6)EASY-PLANNING (2.2.1.6)Easy-Planning permet de créer des plannings sous la représentation de diagrammes et est adapté au... Cliquez pour télécharger Easy-Planning COM-BACKUP (2.0)COM-BACKUP (2.0)
COM-BACKUP est un logiciel de sauvegarde qui permet de planifier les sauvegardes de vos dossiers ...
Cliquez pour télécharger COM-BACKUP
|