# Object detection using USB camera source 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-80021-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. v4l2src qtimlvtransform qtimlvconverter qtimltflite/qtimlsnpe/qtimlqnn qtimlpostprocess qtivcomposer Waylandsink capsfilter tee Qualcomm Open source **Figure : Object detection using USB camera 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.


| Last Published: Mar 26, 2026 [Previous Topic Four stream batching with LiteRT](https://docs.qualcomm.com/bundle/publicresource/80-80021-50/topics/four-stream-batching-with-litert.md) [Next Topic Qualcomm Neural Processing SDK use cases](https://docs.qualcomm.com/bundle/publicresource/80-80021-50/topics/qualcomm-neural-processing-sdk-use-cases.md)