【发布时间】:2020-04-28 23:36:21
【问题描述】:
我收到错误 numpy.ndarray object has no attribute 'read' 和 numpy.ndarray object has no attribute 'seek'。我尝试在网上寻找答案,但失败了。
我想要做的是检测视频中的对象 - 在这种情况下,我想检测斑马。
我使用了一个图像检测器,并尝试将其应用于视频。我正在尝试遍历视频的每一帧并最终将帧传递给函数draw_boxes。
这是错误信息:
Traceback (most recent call last):
File "/Users/ysquared/Library/Python/3.7/lib/python/site-packages/PIL/Image.py", line 2770, in open
fp.seek(0)
AttributeError: 'numpy.ndarray' object has no attribute 'seek'
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "<string>", line 204, in <module>
File "<string>", line 118, in load_image_pixels
File "/Users/ysquared/Library/Python/3.7/lib/python/site-packages/keras_preprocessing/image/utils.py", line 110, in load_img
img = pil_image.open(path)
File "/Users/ysquared/Library/Python/3.7/lib/python/site-packages/PIL/Image.py", line 2772, in open
fp = io.BytesIO(fp.read())
AttributeError: 'numpy.ndarray' object has no attribute 'read'
这里是相关代码:
model = load_model('model.h5')
# define the expected input shape for the model
input_w, input_h = 416, 416
# define the anchors
anchors = [[116,90, 156,198, 373,326], [30,61, 62,45, 59,119], [10,13, 16,30, 33,23]]
# define the labels
labels = ["person", "bicycle", "car", "motorbike", "aeroplane", "bus", "train", "truck",
"boat", "traffic light", "fire hydrant", "stop sign", "parking meter", "bench",
"bird", "cat", "dog", "horse", "sheep", "cow", "elephant", "bear", "zebra", "giraffe",
"backpack", "umbrella", "handbag", "tie", "suitcase", "frisbee", "skis", "snowboard",
"sports ball", "kite", "baseball bat", "baseball glove", "skateboard", "surfboard",
"tennis racket", "bottle", "wine glass", "cup", "fork", "knife", "spoon", "bowl", "banana",
"apple", "sandwich", "orange", "broccoli", "carrot", "hot dog", "pizza", "donut", "cake",
"chair", "sofa", "pottedplant", "bed", "diningtable", "toilet", "tvmonitor", "laptop", "mouse",
"remote", "keyboard", "cell phone", "microwave", "oven", "toaster", "sink", "refrigerator",
"book", "clock", "vase", "scissors", "teddy bear", "hair drier", "toothbrush"]
vs = cv2.VideoCapture('Zebras.mp4')
fourcc = cv2.VideoWriter_fourcc(*'XVID')
writer = cv2.VideoWriter('output.avi', fourcc, 20.0, (640, 480))
class_threshold = 0.6
boxes = list()
while True:
(grabbed, frame) = vs.read()
if grabbed==True:
image, image_w, image_h = load_image_pixels(frame, (input_w, input_h))
yhat = model.predict(image)
for i in range(len(yhat)):
# decode the output of the network
boxes += decode_netout(yhat[i][0], anchors[i], class_threshhold, input_h, input_w)
# correct the sizes of the bounding boxes for the shape of the image
correct_yolo_boxes(boxes, image_h, image_w, input_h, input_w)
# suppress non-maximal boxes
do_nms(boxes, 0.5)
# get the details of the detected objects
v_boxes, v_labels, v_scores = get_boxes(boxes, labels, class_threshold)
# draw what we found
frame = draw_boxes(frame, v_boxes, v_labels, v_scores)
writer.write(frame)
cv2.imshow('frame', frame)
if cv2.waitkey(1) & 0xFF == ord('q'):
break
else:
break
vs.release()
writer.release()
cv2.destroyAllWindows()
【问题讨论】:
标签: python numpy deep-learning object-detection