Why does luckfox_pico_rtsp_yolov5 use OpenCV (CPU) instead of full HW? Any official full-HW demo ?
Posted: 2026-02-05 15:13
Hi,
I inspected the luckfox_pico_rtsp_yolov5 demo and it clearly uses OpenCV on CPU inside the main loop:
VI provides NV12 (YUV420sp) frame (RK_MPI_VI_GetChnFrame)
then it does CPU cv::cvtColor(NV12→BGR)
then CPU resize + letterbox + memcpy() into RKNN input (RGB)
then CPU overlay (rectangle, putText)
then it encodes RGB888 (not NV12) by copying frame.data into a DMA buffer and calling RK_MPI_VENC_SendFrame() with RK_FMT_RGB888
So this demo is not a “full hardware pipeline”, it is more like a visualization-friendly example.
Questions:
Why is OpenCV used here? Is it only for simplicity, or because a full hardware path is not supported / not recommended on RV1106?
Is there an official/reference demo showing a true HW pipeline:
VI(NV12) → VPSS
VPSS channel A → NPU inference (preferably NV12/zero-copy if possible)
VPSS channel B → VENC H264 (NV12)
then RTSP stream
Thanks for your help
I inspected the luckfox_pico_rtsp_yolov5 demo and it clearly uses OpenCV on CPU inside the main loop:
VI provides NV12 (YUV420sp) frame (RK_MPI_VI_GetChnFrame)
then it does CPU cv::cvtColor(NV12→BGR)
then CPU resize + letterbox + memcpy() into RKNN input (RGB)
then CPU overlay (rectangle, putText)
then it encodes RGB888 (not NV12) by copying frame.data into a DMA buffer and calling RK_MPI_VENC_SendFrame() with RK_FMT_RGB888
So this demo is not a “full hardware pipeline”, it is more like a visualization-friendly example.
Questions:
Why is OpenCV used here? Is it only for simplicity, or because a full hardware path is not supported / not recommended on RV1106?
Is there an official/reference demo showing a true HW pipeline:
VI(NV12) → VPSS
VPSS channel A → NPU inference (preferably NV12/zero-copy if possible)
VPSS channel B → VENC H264 (NV12)
then RTSP stream
Thanks for your help