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()
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)
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.