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

S.Mehdi01 Messages postés 2 Statut Membre -  
S.Mehdi01 Messages postés 2 Statut Membre -
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

  1. dsy73 Messages postés 9003 Date d'inscription   Statut Contributeur Dernière intervention   2 547
     
    Salut
    Ton code n'est pas lisible, utilise le bouton "code" pour le formater
    0
  2. S.Mehdi01 Messages postés 2 Statut Membre
     
    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