Je suis nouveau sur OpenCV. Je souhaite effectuer certains prétraitements liés à la normalisation. Je veux normaliser mon image à une certaine taille. Le résultat du code suivant me donne une image noire. Quelqu'un peut-il m'indiquer exactement ce que je fais mal? L'image que je saisis est une image noir/blanc
import cv2 as cv
import numpy as np
img = cv.imread(path)
normalizedImg = np.zeros((800, 800))
cv.normalize(img, normalizedImg, 0, 255, cv.NORM_MINMAX)
cv.imshow('dst_rt', self.normalizedImg)
cv.waitKey(0)
cv.destroyAllWindows()
comme on peut le voir sur: http://docs.opencv.org/2.4/modules/core/doc/operations_on_arrays.html#cv2.normalize , il existe un → dst
qui indique que le résultat de la fonction normalize
est retourné en tant que paramètre de sortie. La fonction ne modifie pas le paramètre d'entrée dst
sur place. (La ligne self.
dans cv.imshow('dst_rt', self.normalizedImg)
est une faute de frappe)
import cv2 as cv
import numpy as np
path = r"C:\Users\Public\Pictures\Sample Pictures\Hydrangeas.jpg"
img = cv.imread(path)
normalizedImg = np.zeros((800, 800))
normalizedImg = cv.normalize(img, normalizedImg, 0, 255, cv.NORM_MINMAX)
cv.imshow('dst_rt', normalizedImg)
cv.waitKey(0)
cv.destroyAllWindows()
Cela vous donne une image noire parce que vous utilisez probablement différentes tailles dans img et normalizedImg.
import cv2 as cv
img = cv.imread(path)
img = cv.resize(img, (800, 800))
cv.normalize(img, img, 0, 255, cv.NORM_MINMAX)
cv.imshow('dst_rt', img)
cv.waitKey(0)
cv.destroyAllWindows()
Lorsque vous appelez cv.imshow()
, vous utilisez self.normalizedImg
au lieu de normalizedImg
.
Le soi. est utilisé pour identifier les membres du groupe et son utilisation dans le code que vous avez écrit n'est pas appropriée. Il ne devrait même pas fonctionner comme écrit. Cependant, je suppose que ce code a été extrait d'une définition de classe, mais vous devez être cohérent dans le nommage des variables et self.normalizedImg
est différent de normalizedImg
.