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

Fermé
S.Mehdi01 Messages postés 2 Date d'inscription jeudi 31 mars 2016 Statut Membre Dernière intervention 1 avril 2016 - Modifié par S.Mehdi01 le 31/03/2016 à 10:53
S.Mehdi01 Messages postés 2 Date d'inscription jeudi 31 mars 2016 Statut Membre Dernière intervention 1 avril 2016 - 1 avril 2016 à 23:27
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 dimanche 22 août 2010 Statut Contributeur Dernière intervention 23 octobre 2020 2 482
1 avril 2016 à 05:39
Salut
Ton code n'est pas lisible, utilise le bouton "code" pour le formater
0
S.Mehdi01 Messages postés 2 Date d'inscription jeudi 31 mars 2016 Statut Membre Dernière intervention 1 avril 2016
1 avril 2016 à 23:27
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