Erreur :AttributeError: 'NoneType' object has no attribute '
Résolurose2022 Messages postés 20 Date d'inscription Statut Membre Dernière intervention -
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 0x80070643 Windows 10 : comment résoudre le problème de la mise à jour KB5001716 - Accueil - Windows
- J'aime par erreur facebook notification - Forum Facebook
- Code erreur f3500-31 ✓ - Forum Bbox Bouygues
- Java code erreur 1603 ✓ - Forum Windows
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