Running the Live Camera Detection Demo terug naar de inleiding
realtime objecten detecteren en localiseren met de camera.
Hier wordt ook gebruik gemaakt van een objecten detectie netwerk (DetectNet).
De videobeelden worden realtime gedetecteerd door het opstarten van:
jetson-inference/build/aarch64/bin/detectnet-camera.py
De commandline argumenten die allemaal optioneel zijn
1) --network vlag die verwijst naar het detectie model. Als default wordt --network=ssd-mobilenet-v2 gebruikt.
2) --overlay vlag met door comma's gescheiden opties box, labels, conf, en non. (default is: --overlay=box, labels, conf)
3) --alfa waarde de alfa waarde van de kleur in de box. (default alfa=120)
4) --threshold waarde, hiermee geef je de minimale drempel voor het gedetecteerde object aan (default --threshold=0.5)
5) --camera vlag voor het type camera (default = --camera=0 voor de MPI CSI camera dit is de raspberry pi (RPI) V2 camera)
6) en 7) --width en --height vlaggen van de camera resolutie (default is dit 1280x720)
Voorbeelden
1) ./detectnet-camera.py
2) ./detectnet-camera.py --network=ssd-inception-v2
Enkele namen heb ik in het Nederlands vertaald en dit werkt goed.
3) ./detectnet-camera.py --width=640 --height=480
import jetson.inference
import jetson.utils
import argparse
import sys
# parse the command line
parser = argparse.ArgumentParser(description="Locate objects in a live camera stream using an object detection DNN.",
formatter_class=argparse.RawTextHelpFormatter, epilog=jetson.inference.detectNet.Usage())
parser.add_argument("--network", type=str, default="ssd-mobilenet-v2", help="pre-trained model to load (see below for options)")
parser.add_argument("--overlay", type=str, default="box,labels,conf", help="detection overlay flags (e.g. --overlay=box,labels,conf)\nvalid combinations are: 'box', 'labels', 'conf', 'none'")
parser.add_argument("--threshold", type=float, default=0.5, help="minimum detection threshold to use")
parser.add_argument("--camera", type=str, default="0", help="index of the MIPI CSI camera to use (e.g. CSI camera 0)\nor for VL42 cameras, the /dev/video device to use.\nby default, MIPI CSI camera 0 will be used.")
parser.add_argument("--width", type=int, default=1280, help="desired width of camera stream (default is 1280 pixels)")
parser.add_argument("--height", type=int, default=720, help="desired height of camera stream (default is 720 pixels)")
try:
opt = parser.parse_known_args()[0]
except:
print("")
parser.print_help()
sys.exit(0)
# load the object detection network
net = jetson.inference.detectNet(opt.network, sys.argv, opt.threshold)
# create the camera and display
camera = jetson.utils.gstCamera(opt.width, opt.height, opt.camera)
display = jetson.utils.glDisplay()
# process frames until user exits
while display.IsOpen():
# capture the image
img, width, height = camera.CaptureRGBA()
# detect objects in the image (with overlay)
detections = net.Detect(img, width, height, opt.overlay)
# print the detections
print("detected {:d} objects in image".format(len(detections)))
for detection in detections:
print(detection)
# render the image
display.RenderOnce(img, width, height)
# update the title bar
display.SetTitle("{:s} | Network {:.0f} FPS".format(opt.network, net.GetNetworkFPS()))
# print out performance info
net.PrintProfilerTimes()