#python
Вопрос:
Может ли кто-нибудь сказать мне, как исправить эту ошибку: cv2.ошибка: OpenCV(4.5.4) :-1: ошибка: (-5:Неверный аргумент) в функции «вперед»
Не удалось разрешить перегрузку:
- Не удается преобразовать объект типа «numpy.ndarray» в » str » для «Имя вывода»
- Не удается разобрать «Выходные блоки». Элемент последовательности с индексом 0 имеет неправильный тип
- Не удается разобрать «Выходные блоки». Элемент последовательности с индексом 0 имеет неправильный тип
- Не могу разобрать «Чужие имена». Элемент последовательности с индексом 0 имеет неправильный тип
- Не могу разобрать «Чужие имена». Элемент последовательности с индексом 0 имеет неправильный тип
import cv2 import numpy as np net = cv2.dnn.readNet('yolov3.weights','yolov3.cfg') #wyciągamy nazwy z coco file classes = [] with open('coco.names','r') as f: classes = f.read().splitlines() #ładowanie zdjęcia img = cv2.imread('kite.jpg') #img = cv2.resize(img, None, fx=0.7, fy=0.7) height, width, _ = img.shape blob = cv2.dnn.blobFromImage(img, 1/255, (416,416), (0,0,0), swapRB=True, crop=False) net.setInput(blob) #set the input from the blob to the network output_layers_names = net.getUnconnectedOutLayers() #Get the index of the output layers. layerOutputs = net.forward(output_layers_names) #HERE IS THE ERROR !!! boxes = [] confidences = [] class_ids = [] #first loop is used to extract all the informations from the layers output #second loop is used to extract the information from each of the outputs for output in layerOutputs: for detection in output: scores = detection[5:] #from 6 elemenets to the end class_ids = np.argmax(scores) #classes prediction class_ids =np.argmax(scores) #location of higer scores confidences= scores[class_ids] if confidences gt; 0.5: center_x = int(detection[0]*width) center_y = int (detection[1]*height) w = int(detection[2]*width) h = int(detection[3]*height) x = int(center_x - w/2) y = int(center_y - h/2) boxes.append([x,y,w,h]) confidences.append((float(confidences))) class_ids.append(class_ids) print(len(boxes)) cv2.imshow('kite.jpg', img) cv2.waitKey(0) cv2.destroyAllWindows()
Комментарии:
1. Из беглого просмотра документации Net следует, что метод getUnconnectedOutLayers() возвращает другой тип (список int), чем ожидаемый forward (), который ожидает, среди других типов, список Mat.