Closed AnnaRose0226 closed 5 years ago
Try casting it with, cv2.UMat()
and check if it works.
This shouldn't happen, what is the image format?
Was having the same issue, tried casting as you suggested:
def show_image(img):
# img = cv.UMat(img)
cv.imshow('Image', img)
cv.waitKey(0)
TypeError: Required argument 'ranges' (pos 2) not found
I'm reading the documentation on UMat() but I'm unsure if that's actually the culprit.
Strangely, I'm able to get it working In testing I merged the yolo_utils.py with yolo.py, and hardcoded the default flags to point to the paths.
I commented out the call to show_image()
finally:
img = infer_image(net, layer_names, height, width, img, colors, labels, FLAGS)
# show_image(img)
Then added these lines to the end of of the script, using your existing functions.
img = cv2.imread(r"C:\Users\Username\Desktop\testImage.jpg")
#rewrite with fieldnames
blob = cv2.dnn.blobFromImage(image=img, scalefactor=1.0/255.0, size=(416,416), mean=None, swapRB=True, crop=False)
net.setInput(blob)
outs = net.forward(layer_names)
boxes, confidences, classids = generate_boxes_confidences_classids(outs,height,width,FLAGS.confidence)
idxs = cv2.dnn.NMSBoxes(boxes, confidences, FLAGS.confidence, FLAGS.threshold)
#changed name from img to newimg for testing
newimg = draw_labels_and_boxes(img,boxes,confidences,classids,idxs,colors,labels)
cv2.imshow('img',newimg)
# save output just in case
processedImage = r"C:\Users\Username\Desktop\output.png"
cv2.imwrite(processedImage,newimg)
cv2.waitKey(10000)
cv2.destroyAllWindows()
Hopefully this is somewhat helpful to narrow down why it's behaving this way, really appreciate the work you've already done here!
Error message: TypeError:Expected cv::UMat for argument 'img',I cann't find any resolvent,Can you help me.Thanks