I,m目前正在从事tensorflow图像处理项目。标识了三种类型的对象,分别用“ s_class”表示的标号1(car),2(bus)和3(van)。检测到的输出对象/ objetcs由s_class给出,它是一个numpy.ndarray。当我打印检测到的对象编号时,
(boxes, scores, classes, num) = sess.run(
[detection_boxes, detection_scores, detection_classes, num_detections],
feed_dict={image_tensor: frame_expanded})
s_class = classes[scores > 0.6]
print(s_class)
它给出类似的输出,
>>[2.] #bus is detected
[3. 2. 1.] #all three objects(van,bus,car) are detected
[1. 2. 3.]
[1. 2. 3.]
[1. 2. 3.]
[2. 1. 3.]
[2. 1. 3.]
[2. 1. 3.]
[2. 1. 3.]
[2. 3. 1.]
[2. 3. 1.]
[] #nothing is detected
[2.] #only second object is detected
[]
[1.] #only first object is detected
并继续... 对象未按有组织的顺序在数组中表示(例如:-[1. 2. 3.]或[2. 1. 3。] ...等-它更改位置) 如果检测到对象1,则需要打印“ ok”,而当检测到对象2和/或3时,则需要打印“ notok”。同样,检测到对象1和对象2和/或3时,它应打印“ notok”。 我尝试过,
if (s_class==1):
print("ok")
elif (s_class==2 or s_class==3):
print("notok")
elif (s_class==1 and (s_class==2 or s_class==3)):
print("notok")
elif (s_class==1 and s_class==2 and s_class==3 ):
print("notok")
这不起作用。我该如何将numpy.ndarray与以上条件进行比较?
答案 0 :(得分:0)
您可以使用in
进行比较。
x = np.array([[1, 2, 3], [4, 5, 6]], np.int32)
x0 = x[0] #array([1, 2, 3])
#True
1 in x0 and 2 in x0
#True
1 in x0 or 2 in x0
#False
1 in x0 and 4 in x0