TypeError: unsupported operand type(s) for -: 'NoneType' and 'No

S.Mehdi01 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -  
S.Mehdi01 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention   -
je suis nouveau dans la programmation python et je suis sur le point de réaliser un scanner 3d linaire et j'ai eu des problème lors de la compilation du code

"import numpy as np
import scipy
import scipy.ndimage as ndimage
import scipy.ndimage.filters as filters
import matplotlib.pyplot as plt
import cv2

fname = '/home/mehdi/Bureau/mehdi.jpg'
neighborhood_size = 5
threshold = 1500
scale1 = 0.1292
scale2 = 0.03175

data = cv2.imread('fname',0)


data_max = filters.maximum_filter(data, neighborhood_size)
maxima = (data == data_max)
data_min = filters.minimum_filter(data, neighborhood_size)
diff = ((data_max - data_min) > threshold)
maxima[diff == 0] = 0

labeled, num_objects = ndimage.label(maxima)
slices = ndimage.find_objects(labeled)

for dy,dx in slices:

x_center = (dx.start + dx.stop - 1)/2
y_center = (dy.start + dy.stop - 1)/2

if x_center > 500 and x_center < 621:
xx1.append((x_center*scale1)+(fileloop*scale2))
yy1.append(y_center*scale1)
zz1.append((621-x_center)*1.0*scale1)"
et voici le message d'erreur
" diff = ((data_max + data_min) > threshold)
TypeError: unsupported operand type(s) for -: 'NoneType' and 'NoneType'"

2 réponses

dsy73 Messages postés 9252 Date d'inscription   Statut Contributeur Dernière intervention   2 485
 
Salut
Ton code n'est pas lisible, utilise le bouton "code" pour le formater
0
S.Mehdi01 Messages postés 2 Date d'inscription   Statut Membre Dernière intervention  
 
import cv2

import numpy as np
import scipy
import scipy.ndimage as ndimage
import scipy.ndimage.filters as filters
import matplotlib.pyplot as plt

neighborhood_size = 4
threshold = 100
scale1 = 0.1292
scale2 = 0.03175

cv2.namedWindow("Image")

data = cv2.imread('/home/mehdi/Bureau/mehdi.jpg',0)

data_max = scipy.ndimage.filters.maximum_filter(data, 4)
maxima = (data == data_max)
data_min = scipy.ndimage.filters.minimum_filter(data, 4)
diff = ((data_max - data_min) > threshold)
maxima[diff == 0] = 0

labeled, num_objects = ndimage.label(maxima)
slices = ndimage.find_objects(labeled)

for dy,dx in slices:

x_center = (dx.start + dx.stop - 1)/2
y_center = (dy.start + dy.stop - 1)/2

if x_center > 500 and x_center < 621:
xx1.append((x_center*scale1)+(fileloop*scale2))
yy1.append(y_center*scale1)
zz1.append((621-x_center)*1.0*scale1)

if x_center > 621 and x_center < 800:
xx2.append((x_center*scale1)+(fileloop*scale2))
yy2.append(y_center*scale1)
zz2.append((x_center-621)*1.0*scale1)

pointcloud1 = zip(xx1,yy1,zz1)
pointcloud2 = zip(xx2,yy2,zz2)

np.savetxt('test1.asc',pointcloud1,fmt='%-7.2f')
np.savetxt('test2.asc',pointcloud2,fmt='%-7.2f')


cv2.imshow("Image",data)
cv2.waitKey(0)
cv2.destroyALLWindows()
0