Я пытаюсь запустить python easy_object_detection.py --video=videos/test1.mp4
, чтобы создать маску видеообнаружения объекта rcnn.При этом я получаю сообщение об ошибке:
File "easy_object_detection.py", line 166, in <module>
boxes, masks = net.forward(['detection_out_final', 'detection_masks'])
cv2.error: OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\core\src\matrix.cpp:541: error: (-215:Assertion failed) r == Range::all() || (0 <= r.start && r.start < r.end && r.end <= m.size[i]) in function 'cv::Mat::Mat'
Примечание. Мой сценарий позволяет без проблем запускать python easy_object_detection.py --image=images/img1.jpg
.
Я пытался установить opencv4
, меняя мой.mp4
до .mjpg
, добавление пакетов в Visual Studio 2017 com, и я искал в своем файле pbtxt числа с плавающей запятой минимального размера, но в моем файле pbtxt даже не было упомянуто min_size.
def postprocess(boxes, masks):
# Output size of masks is NxCxHxW where
# N - number of detected boxes
# C - number of classes (excluding background)
# HxW - segmentation shape
numClasses = masks.shape[1]
numDetections = boxes.shape[2]
frameH = frame.shape[0]
frameW = frame.shape[1]
for i in range(numDetections):
box = boxes[0, 0, i]
mask = masks[i]
score = box[2]
if score > confThreshold:
classId = int(box[1])
# Extract the bounding box
left = int(frameW * box[3])
top = int(frameH * box[4])
right = int(frameW * box[5])
bottom = int(frameH * box[6])
left = max(0, min(left, frameW - 1))
top = max(0, min(top, frameH - 1))
right = max(0, min(right, frameW - 1))
bottom = max(0, min(bottom, frameH - 1))
# Extract the mask for the object
classMask = mask[classId]
# Draw bounding box, colorize and show the mask on the image
drawBox(frame, classId, score, left, top, right, bottom, classMask)
# Run the forward pass to get output from the output layers
boxes, masks = net.forward(['detection_out_final', 'detection_masks'])
Я ожидаю получить файл .avi, который показывает ограничивающие рамки и маски, но вместо этого я получаю:
File "easy_object_detection.py", line 166, in <module>
boxes, masks = net.forward(['detection_out_final', 'detection_masks'])
cv2.error: OpenCV(4.0.0) C:\projects\opencv-python\opencv\modules\core\src\matrix.cpp:541: error: (-215:Assertion failed) r == Range::all() || (0 <= r.start && r.start < r.end && r.end <= m.size[i]) in function 'cv::Mat::Mat'
ОБНОВЛЕНИЕ: я смог заставить скрипт работать с видео 360p (я использовал1080p).Теперь мой вопрос: «Как мне установить код, разрешающий видео большего размера, если в моем pbtxt нет места для установки максимального и минимального размера?»