Ask Your Question

Revision history [back]

click to hide/show revision 1
initial version

yolo with opencv error

I am trying to yolo in opencv but getting the error

CODE IS BELOW

import cv2 import numpy as np import time

Load Yolo

net = cv2.dnn.readNet("weights/yolov3-tiny.weights", "cfg/yolov3-tiny.cfg") classes = [] with open("coco.names", "r") as f: classes = [line.strip() for line in f.readlines()] layer_names = net.getLayerNames() output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()] colors = np.random.uniform(0, 255, size=(len(classes), 3))

Loading image

cap = cv2.VideoCapture(0)

font = cv2.FONT_HERSHEY_PLAIN starting_time = time.time() frame_id = 0 while True: _, frame = cap.read() frame_id += 1

height, width, channels = frame.shape

# Detecting objects
blob = cv2.dnn.blobFromImage(frame, 0.00392, (416, 416), (0, 0, 0), True, crop=False)

net.setInput(blob)
outs = net.forward(output_layers)

# Showing informations on the screen
class_ids = []
confidences = []
boxes = []
for out in outs:
    for detection in out:
        scores = detection[5:]
        class_id = np.argmax(scores)
        confidence = scores[class_id]
        if confidence > 0.2:
            # Object detected
            center_x = int(detection[0] * width)
            center_y = int(detection[1] * height)
            w = int(detection[2] * width)
            h = int(detection[3] * height)

            # Rectangle coordinates
            x = int(center_x - w / 2)
            y = int(center_y - h / 2)

            boxes.append([x, y, w, h])
            confidences.append(float(confidence))
            class_ids.append(class_id)

indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.8, 0.3)

for i in range(len(boxes)):
    if i in indexes:
        x, y, w, h = boxes[i]
        label = str(classes[class_ids[i]])
        confidence = confidences[i]
        color = colors[class_ids[i]]
        cv2.rectangle(frame, (x, y), (x + w, y + h), color, 2)
        cv2.putText(frame, label + " " + str(round(confidence, 2)), (x, y + 30), font, 3, color, 3)



elapsed_time = time.time() - starting_time
fps = frame_id / elapsed_time
cv2.putText(frame, "FPS: " + str(round(fps, 2)), (10, 50), font, 4, (0, 0, 0), 3)
cv2.imshow("Image", frame)
key = cv2.waitKey(1)
if key == 27:
    break

cap.release() cv2.destroyAllWindows()

ERROR

Traceback (most recent call last): File "C:\Users\iamfa\Desktop\yolo_realtime_detection_cpu\real_time_yolo.py", line 6, in <module> net = cv2.dnn.readNet("weights/yolov3-tiny.weights", "cfg/yolov3-tiny.cfg") cv2.error: OpenCV(4.1.2) C:\projects\opencv-python\opencv\modules\dnn\src\darknet\darknet_importer.cpp:214: error: (-212:Parsing error) Failed to parse NetParameter file: weights/yolov3-tiny.weights in function 'cv::dnn::dnn4_v20190902::readNetFromDarknet'

[Finished in 0.9s]

click to hide/show revision 2
None

updated 2019-12-06 10:46:14 -0600

berak gravatar image

yolo with opencv error

I am trying to yolo in opencv but getting the error

error CODE IS BELOW

import cv2
import numpy as np
import time

time # Load Yolo

Yolo net = cv2.dnn.readNet("weights/yolov3-tiny.weights", "cfg/yolov3-tiny.cfg") classes = [] with open("coco.names", "r") as f: classes = [line.strip() for line in f.readlines()] layer_names = net.getLayerNames() output_layers = [layer_names[i[0] - 1] for i in net.getUnconnectedOutLayers()] colors = np.random.uniform(0, 255, size=(len(classes), 3))

3)) # Loading image

image cap = cv2.VideoCapture(0)

cv2.VideoCapture(0) font = cv2.FONT_HERSHEY_PLAIN starting_time = time.time() frame_id = 0 while True: _, frame = cap.read() frame_id += 1

1
height, width, channels = frame.shape
 # Detecting objects
 blob = cv2.dnn.blobFromImage(frame, 0.00392, (416, 416), (0, 0, 0), True, crop=False)
 net.setInput(blob)
 outs = net.forward(output_layers)
 # Showing informations on the screen
 class_ids = []
 confidences = []
 boxes = []
 for out in outs:
 for detection in out:
 scores = detection[5:]
 class_id = np.argmax(scores)
 confidence = scores[class_id]
  if confidence > 0.2:
 # Object detected
 center_x = int(detection[0] * width)
 center_y = int(detection[1] * height)
 w = int(detection[2] * width)
 h = int(detection[3] * height)
 # Rectangle coordinates
  x = int(center_x - w / 2)
 y = int(center_y - h / 2)
 boxes.append([x, y, w, h])
 confidences.append(float(confidence))
 class_ids.append(class_id)
 indexes = cv2.dnn.NMSBoxes(boxes, confidences, 0.8, 0.3)
 for i in range(len(boxes)):
 if i in indexes:
  x, y, w, h = boxes[i]
 label = str(classes[class_ids[i]])
 confidence = confidences[i]
 color = colors[class_ids[i]]
  cv2.rectangle(frame, (x, y), (x + w, y + h), color, 2)
  cv2.putText(frame, label + " " + str(round(confidence, 2)), (x, y + 30), font, 3, color, 3)
 elapsed_time = time.time() - starting_time
 fps = frame_id / elapsed_time
 cv2.putText(frame, "FPS: " + str(round(fps, 2)), (10, 50), font, 4, (0, 0, 0), 3)
 cv2.imshow("Image", frame)
 key = cv2.waitKey(1)
 if key == 27:
 break

cap.release()
cv2.destroyAllWindows()

cap.release() cv2.destroyAllWindows()ERROR

ERROR

Traceback (most recent call last):
File "C:\Users\iamfa\Desktop\yolo_realtime_detection_cpu\real_time_yolo.py", line 6, in <module>
net = cv2.dnn.readNet("weights/yolov3-tiny.weights", "cfg/yolov3-tiny.cfg")
cv2.error: OpenCV(4.1.2) C:\projects\opencv-python\opencv\modules\dnn\src\darknet\darknet_importer.cpp:214: error: (-212:Parsing error) Failed to parse NetParameter file: weights/yolov3-tiny.weights in function 'cv::dnn::dnn4_v20190902::readNetFromDarknet'

'cv::dnn::dnn4_v20190902::readNetFromDarknet' [Finished in 0.9s]

0.9s]