# Object detection using USB camera source Source: [https://docs.qualcomm.com/doc/80-80020-50/topic/object-detection-using-usb-camera-source.html](https://docs.qualcomm.com/doc/80-80020-50/topic/object-detection-using-usb-camera-source.html) The use case streams video from a USB webcam connected to the Qualcomm EVK. This webcam should be accessible as a /dev/videoX device. Additionally, you can perform object detection and preview the results. Note: For USB camera input, set the `video-format`, `resolution`, and `framerate` parameters in the configuration file to match the capabilities of the camera. To check the camera capabilities, see [Configure USB camera](https://docs.qualcomm.com/bundle/publicresource/topics/80-80020-8/usb.html#configure-usb-camera). Run the following commands on the target device for different use cases: - MJPEG video format: gst-launch-1.0 -v -e --gst-debug=2 v4l2src device="/dev/video2" ! image/jpeg,width=1920,height=1080,framerate=30/1 ! jpegdec ! \ videoconvert ! video/x-raw,format=NV12 ! qtivtransform ! queue ! tee name=split ! queue ! qtivcomposer name=mixer ! queue ! \ fpsdisplaysink sync=true text-overlay=true video-sink="waylandsink sync=true fullscreen=true" split. ! queue ! qtimlvconverter ! queue ! \ qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so external-delegate-options="QNNExternalDelegate,backend_type=htp;" \ model=/etc/models/yolox_quantized.tflite ! queue ! qtimlpostprocess settings="{\"confidence\": 75.0}" results=10 module=yolov8 labels=/etc/labels/yolox.json \ ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.Copy to clipboard - YUY2 video format: gst-launch-1.0 -v -e --gst-debug=2 v4l2src io-mode=4 device="/dev/video2" ! \ video/x-raw,format=YUY2,width=640,height=480,framerate=30/1 ! queue ! tee name=split ! queue ! \ qtivcomposer name=mixer ! queue ! fpsdisplaysink sync=true text-overlay=true video-sink="waylandsink sync=true fullscreen=true" split. ! \ queue ! qtimlvconverter ! queue ! qtimltflite delegate=external external-delegate-path=libQnnTFLiteDelegate.so \ external-delegate-options="QNNExternalDelegate,backend_type=htp;" model=/etc/models/yolox_quantized.tflite ! queue ! \ qtimlpostprocess settings="{\"confidence\": 75.0}" results=10 module=yolov8 labels=/etc/labels/yolox.json \ ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.Copy to clipboard - NV12 video format: gst-launch-1.0 -v -e --gst-debug=2 v4l2src io-mode=4 device="/dev/video2" ! video/x-raw,format=NV12,width=640,height=480,framerate=30/1 ! queue ! tee name=split split. ! \ queue ! qtivcomposer name=mixer ! 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/yolox_quantized.tflite ! queue ! qtimlpostprocess settings="{\"confidence\": 75.0}" results=10 module=yolov8 labels=/etc/labels/yolox.json \ ! video/x-raw,format=BGRA,width=640,height=360 ! queue ! mixer.Copy to clipboard The following figures show a pipeline, which processes the input from the USB camera to generate various outputs. Figure : Object detection using USB camera source v4l2src qtimlvtransform qtimlvconverter qtimltflite/qtimlsnpe/qtimlqnn qtimlpostprocess qtivcomposer Waylandsink capsfilter tee Qualcomm Open source The following table provides the sequential processing stages of the pipeline execution: | Pipeline | Description | | --- | --- | | USB camera and object detection on wayland |

  1. USB camera captures the camera live stream.


  2. Capsfilter is applied to enforce constraints on the raw
    video data.


  3. tee is used to split the stream for inferencing.


  4. qtivtransform transforms the stream
    data.


  5. qtimlvconverter does preprocessing and
    converts the video stream to a tensor stream, which is used
    for inferencing.


  6. qtimltflite runs the inference on the
    stream.


  7. qtimlpostprocess handles the inference results from any
    object detection model and produces video frames.


  8. qtivcomposer composes the video frames
    and shares them with Waylandsink.


  9. Waylandsink submits the composed video
    stream to Weston, which renders it on the local
    display.


| **Parent Topic:** [LiteRT use cases](https://docs.qualcomm.com/doc/80-80020-50/topic/tensorflow-lite-use-cases.html) Last Published: Mar 02, 2026 [Previous Topic Four stream batching with LiteRT](https://docs.qualcomm.com/bundle/publicresource/80-80020-50/topics/four-stream-batching-with-litert.md) [Next Topic Qualcomm Neural Processing SDK use cases](https://docs.qualcomm.com/bundle/publicresource/80-80020-50/topics/qualcomm-neural-processing-sdk-use-cases.md)