Maison > Article > développement back-end > Comment ajuster la luminosité et le contraste d'une image à l'aide de Python
Comment utiliser Python pour régler la luminosité et le contraste des images
Introduction :
Dans le traitement d'image, le réglage de la luminosité et du contraste est l'une des opérations courantes et importantes. Python fournit une multitude de bibliothèques de traitement d'images, telles que PIL, OpenCV, etc., qui peuvent facilement implémenter ces deux opérations. Cet article expliquera comment utiliser le code Python pour ajuster la luminosité et le contraste des images et donnera des exemples de code correspondants.
Première partie : Ajuster la luminosité de l'image
Le réglage de la luminosité de l'image peut être obtenu en modifiant la valeur RVB de chaque pixel. La méthode spécifique consiste à ajouter un incrément fixe à la valeur RVB de chaque pixel. Vous trouverez ci-dessous un exemple de code qui utilise la bibliothèque PIL pour ajuster la luminosité d'une image :
from PIL import ImageEnhance # 打开图像 image = Image.open('image.jpg') # 创建Enhancer对象 enhancer = ImageEnhance.Brightness(image) # 调整亮度为原来的2倍 bright_image = enhancer.enhance(2) # 显示图像 bright_image.show() # 保存图像 bright_image.save('bright_image.jpg')
Dans le code ci-dessus, une image est d'abord ouverte via la fonction Image.open(), puis un objet Enhancer est créé à l'aide de ImageEnhance. Fonction .Luminosité(). Utilisez ensuite la méthode Enhancer() de l'objet Enhancer pour ajuster la luminosité de l'image. Le paramètre représente le multiple de la luminosité. Enfin, appelez la méthode show() pour afficher l'image ajustée, ou vous pouvez utiliser la méthode save() pour enregistrer l'image.
Partie 2 : Ajustement du contraste de l'image
Le réglage du contraste de l'image est obtenu en modifiant la luminosité relative de chaque pixel. La méthode spécifique consiste à multiplier la valeur RVB de chaque pixel par un incrément fixe. Voici un exemple de code qui utilise la bibliothèque OpenCV pour ajuster le contraste d'une image :
import cv2 # 读取图像 image = cv2.imread('image.jpg') # 提取亮度通道 hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV) v_channel = hsv_image[:,:,2] # 调整亮度为原来的2倍 contrast_image = cv2.addWeighted(v_channel, 2, np.zeros(v_channel.shape, v_channel.dtype), 0, 0) # 将亮度通道替换回原图像 hsv_image[:,:,2] = contrast_image contrast_image = cv2.cvtColor(hsv_image, cv2.COLOR_HSV2BGR) # 显示图像 cv2.imshow('contrast_image', contrast_image) cv2.waitKey(0) # 保存图像 cv2.imwrite('contrast_image.jpg', contrast_image)
Dans le code ci-dessus, une image est d'abord lue à l'aide de la fonction cv2.imread(), puis l'image est convertie à partir de la couleur BGR. espace à l'aide de la fonction cv2.cvtColor() Convertissez en espace colorimétrique HSV car l'espace colorimétrique HSV est plus sensible aux changements de luminosité. Ensuite, en extrayant le canal de luminosité hsv_image[:,:,2], un tableau bidimensionnel v_channel représentant la luminosité est obtenu.
Utilisez ensuite la fonction cv2.addWeighted() pour combiner linéairement les canaux de luminosité afin d'ajuster le contraste, où le premier paramètre représente l'image d'entrée et le deuxième paramètre représente le multiple de luminosité, ici défini sur 2. Enfin, le canal de luminosité ajusté est remplacé par l'image d'origine et l'image est reconvertie de l'espace colorimétrique HSV vers l'espace colorimétrique BGR via la fonction cv2.cvtColor().
Enfin, l'image ajustée est affichée via la fonction cv2.imshow(), cv2.waitKey(0) est utilisée pour attendre la clé et la fonction cv2.imwrite() est utilisée pour enregistrer l'image.
Conclusion :
Grâce aux exemples de code ci-dessus, nous pouvons voir qu'utiliser Python pour ajuster la luminosité et le contraste des images est très simple et peut être réalisé avec seulement quelques lignes de code. Grâce à différents réglages de paramètres, différents degrés de réglage de la luminosité et du contraste peuvent être obtenus pour répondre à différents besoins. Dans les applications pratiques, des méthodes et paramètres de réglage appropriés peuvent être sélectionnés en fonction de situations spécifiques pour obtenir les meilleurs résultats. J'espère que cet article sera utile aux lecteurs dans leur apprentissage et leur pratique du traitement d'images.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!