Comment faire pour modifier des valeurs de saturation avec opencv?
Afin d'ajouter de la valeur de la constante à chaque pixel la valeur de saturation, je le fais en double boucle. Je me demande si il n'y a pas plus simple et plus rapide de commande de la réalisation de ce.
OriginalL'auteur Tae-Sung Shin | 2011-12-16
Vous devez vous connecter pour publier un commentaire.
MODIFIER
Si par la saturation, tu veux dire que le canal dans un HSV image, vous devez separe votre image en trois couches avec
split()
, appliquer la correction de saturation du canal, puis mettez-les ensemble avecmerge()
.Oui, si vous voulez traiter seul le canal que vous auriez besoin de séparer ce premier. Pour ce qui est plus rapide, je ne sais pas, essayer les deux et voir!
ConvertTo est certainement optimisé, mais la peine de fractionnement et de la fusion (avec toutes les allocations en cause) peut-il plus élevé que le gain de l'aide de l'optimisation de la fonction convert(). Comme Chris l'a dit, essayer et voir.
OriginalL'auteur Sam
OriginalL'auteur karlphillip
Pour les expériences que j'ai tenté, l'autre méthode de fractionnement du hsv valeurs, le réglage des canaux et ensuite de faire une fusion a donné un meilleur rendement. Ci-dessous est ce qui a fonctionné pour moi plusieurs fois plus rapide par rapport à une boucle à travers pixels:
Remarque que j'avais converti les valeurs de float32 pendant BGR2HSV transformation pour éviter les valeurs négatives au cours de la saturation de la transformation à cause uint8 (par défaut) overflow:
Et converti par défaut uint8 après mon ajustement de la saturation:
OriginalL'auteur Punit S