Erreur :AttributeError: 'NoneType' object has no attribute '
Résolurose2022 Messages postés 20 Statut Membre -
Bonsoir
j'ai exécuté le code d'une m'étrique de qualité d"image psnr
je comprends pas l'erreur ,a la ligne 13 j'ai besoin d'aide svp
erreur : ligne13 height, width, channel = s.shape
le code :
import math
import cv2
import csv
import os
def read_bmp(image_name):
return cv2.imread(image_name+'.bmp')
def calculate_psnr(n):
s = read_bmp('source/s'+n)
r = read_bmp('recovery/rs'+n)
height, width, channel = s.shape
size = height*width
sb,sg,sr = cv2.split(s)
rb,rg,rr = cv2.split(r)
mseb = ((sb-rb)**2).sum()
mseg = ((sg-rg)**2).sum()
mser = ((sr-rr)**2).sum()
MSE = (mseb+mseg+mser)/(3*size)
psnr = 10*math.log10(255**2/MSE)
return round(psnr,2)
def write_csv(n,data):
with open('PSNR-result/'+n+'.csv', 'w', newline='') as myfile:
wr = csv.writer(myfile, quoting=csv.QUOTE_ALL)
wr.writerow(data)
for i in range(6):
print("Creating CSV of PSNR-result",i+1,"...",sep="")
write_csv(str(i+1),[calculate_psnr(str(i+1))])
os.system("pause")
cordialement
Windows / Chrome 106.0.5249.168
- Erreur :AttributeError: 'NoneType' object has no attribute '
- Erreur 0x80070643 - Accueil - Windows
- Erreur 4101 france tv - Forum Lecteurs et supports vidéo
- Erreur 4201 france tv ✓ - Forum Réseaux sociaux
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
- J'aime par erreur facebook notification - Forum Facebook
4 réponses
La fonction read_bmp() ne retourne rien, donc elle retourne None
Donc, l'attribut shape ne s'applique à "rien"
Que retourne cv2.imread(image_name+'.bmp') ?
Moi non plus je ne comprend pas ...
Tu passes en paramètre à ta fonction PSNR les variables s et r et tu les redéfinis dans la fonction.
Ces objets ne semblent pas exister au moment de l'appel.
Salut,
s et r ne sont pas définis lors de l'appel mais dans la fonction, supprime les paramètres s et r
def PSNR():
....
value = PSNR()
bonjour
j'ai corrigé le code pour l'importation des images mais j'ai encore un message d'erreur
value = PSNR(s, r)
NameError: name 's' is not defined
pourtant le s est definie comme image original
voici le code :
def PSNR(s, r):
s = cv2.imread("original_image.png")
r = cv2.imread("compressed_image.png")
height, width, channel = s.shape
size = height*width
sb,sg,sr = cv2.split(s)
rb,rg,rr = cv2.split(r)
mseb = ((sb-rb)**2).sum()
mseg = ((sg-rg)**2).sum()
mser = ((sr-rr)**2).sum()
MSE = (mseb+mseg+mser)/(3*size)
psnr = 10*math.log10(255**2/MSE)
return round(psnr,2)
def main():
value = PSNR(s, r)
# Affichage du psnr
print(f"PSNR value is {value} dB")
if __name__ == "__main__":
main()
que dois je comprendre ? un coup de main svp
merci
cordialement
bonsoir
merci bien j'ai compris qu'il faut enlever les paramètres
good night