web-dev-qa-db-fra.com

Normaliser les images dans OpenCV

J'ai écrit le code suivant pour travailler normaliser une image en utilisant NORM_L1 dans OpenCV. Mais l'image de sortie était simplement noire.Comment résoudre ce problème?

import cv2
import numpy as np
import Image

img = cv2.imread('img7.jpg')
gray_image = cv2.cvtColor(img,cv2.COLOR_BGR2GRAY)
a = np.asarray(gray_image)


dst = np.zeros(shape=(5,2))

b=cv2.normalize(a,dst,0,255,cv2.NORM_L1)


im = Image.fromarray(b)

im.save("img50.jpg")

cv2.waitKey(0)
cv2.destroyAllWindows()
22
N.Chandimali

Si vous souhaitez modifier la plage en [0, 1], assurez-vous que le type de données en sortie est float.

image = cv2.imread("lenacolor512.tiff", cv2.IMREAD_COLOR)  # uint8 image
norm_image = cv2.normalize(image, None, alpha=0, beta=1, norm_type=cv2.NORM_MINMAX, dtype=cv2.CV_32F)
42
Sounak

Lorsque vous normalisez une matrice à l'aide de NORM_L1, vous divisez chaque valeur de pixel par la somme des valeurs absolues de tous les pixels de l'image. En conséquence, toutes les valeurs en pixels deviennent bien inférieures à 1 et vous obtenez une image en noir. Essayez NORM_MINMAX au lieu de NORM_L1.

14
Andrey Smorodov