# Object detection and display with LiteRT
Source: [https://docs.qualcomm.com/doc/80-70020-50/topic/single-camera-stream-with-object-detection-and-display.html](https://docs.qualcomm.com/doc/80-70020-50/topic/single-camera-stream-with-object-detection-and-display.html)
The use cases use a YOLOv5 LiteRT model to identify the object in a scene. The use
case is to either overlay or compose the bounding boxes over the detected objects, and then
display the results.
## Use qtivoverlay plugin to apply bounding box overlay
Run the use case on the target device:
gst-launch-1.0 -e --gst-debug=2 qtiqmmfsrc name=camsrc ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! \
queue ! tee name=split split. ! queue ! qtimetamux name=metamux ! queue ! qtivoverlay ! queue ! waylandsink fullscreen=true split. ! queue ! \
qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \
external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/etc/models/yolov5.tflite ! queue ! \
qtimlvdetection threshold=75.0 results=10 module=yolov5 labels=/etc/labels/yolov5.labels \
constants="YoloV5,q-offsets=<3.0>,q-scales=<0.005047998391091824>;" ! text/x-raw ! queue ! metamux.Copy to clipboard
To stop the use case, use CTRL + C.
The following figure shows the flow of the use case execution:
1. Identifies object scenes in the scene from a video stream, which is coming
through a camera source.
2. Overlays bounding boxes over the detected objects using overlaylib.
3. Displays the results.
Figure : Pipeline for bounding box overlay
The following table provides the sequential processing stages of the pipeline
execution:
| Process | Description |
| --- | --- |
| [qtiqmmfsrc](https://docs.qualcomm.com/doc/80-70020-50/topic/qtiqmmfsrc.html) |
Collects the video stream (source) and creates two copies of the source:
One stream is sent to qtimetamux plugin to retain the video stream.
The other stream is sent to an ML inferencing pipeline.
Weston renders the video stream and bounding boxes generated for the objects in that scene on a local display device.
|
## Use qtivcomposer to mix original frame with bounding box mask
Run the use case on the target
device:
gst-launch-1.0 -e --gst-debug=2 qtiqmmfsrc name=camsrc ! video/x-raw,format=NV12_Q08C,width=1280,height=720,framerate=30/1 ! queue ! tee name=split split. ! \
queue ! qtivcomposer name=mixer sink_1::dimensions="<1920,1080>" ! queue ! waylandsink fullscreen=true split. ! queue ! qtimlvconverter ! queue ! \
qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp;" \
model=/etc/models/yolov5.tflite ! queue ! qtimlvdetection threshold=75.0 results=10 module=yolov5 labels=/etc/labels/yolov5.labels \
constants="YoloV5,q-offsets=<3.0>,q-scales=<0.005047998391091824>;" ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.Copy to clipboard
To stop the use case, use CTRL + C.
The following figure shows the flow of the use case execution:
1. Identifies object scenes in the scene from a video stream, which is coming
through a camera source.
2. Composes the following using qtivcomposer:
1. Bounding boxes over objects detected.
2. Original video stream.
3. Displays the results.
Figure : Pipeline for bounding box mask with qtivcomposer
The following table provides the sequential processing stages of the pipeline
execution:
| Process | Description |
| --- | --- |
| [qtiqmmfsrc](https://docs.qualcomm.com/doc/80-70020-50/topic/qtiqmmfsrc.html) |
Collects the video stream (source) and creates two copies of the source:
One stream is sent to qtivcomposer plugin to retain the video stream.
The other stream is sent to a ML inferencing pipeline.
Weston displays the following on a local display device:
The video stream is captured from the camera.
The bounding boxes are drawn over the allowed number of objects identified in that scene.
|
**Parent Topic:** [LiteRT use cases](https://docs.qualcomm.com/doc/80-70020-50/topic/tensorflow-lite-use-cases.html)
Last Published: Jan 30, 2026
[Previous Topic
Audio classification decode and display with LiteRT](https://docs.qualcomm.com/bundle/publicresource/80-70020-50/topics/audio-classification-with-litert.md) [Next Topic
Object detection and encode with LiteRT](https://docs.qualcomm.com/bundle/publicresource/80-70020-50/topics/single-camera-stream-with-object-detection-and-encode.md)