本文主要是介绍rknn3588 rstp yolov5,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
目录
rknn3588官网
只有linux支持rtsp,代码:
Android支持h264裸流,不支持rtsp码流实时运算
笔者实现了Android rtsp 实时检测
更换yolov5模型
ffmpegrtsp转264裸流
ndk下载:
格式RK_FORMAT_YCbCr_420_SP:
android系统rtsp读流进行算法识别
设置权限
依赖项:
rknn输入数据转换
这个是Ubuntu系统的:
rknn3588官网
rknn-toolkit2/rknpu2/examples/rknn_yolov5_demo/utils/mpp_decoder.cpp at 77b71094e08391c543d9c65fea5f7cf98cc16eee · airockchip/rknn-toolkit2 · GitHub
只有linux支持rtsp,代码:
if(ZLMEDIAKIT_LIBS)
add_definitions(-DBUILD_VIDEO_RTSP)
endif()
#if defined(BUILD_VIDEO_RTSP)process_video_rtsp(&app_ctx, video_name);
#elseprintf("rtsp no support\n");
#endif
Android支持h264裸流,不支持rtsp码流实时运算
rknn-toolkit2/rknpu2/examples/rknn_yolov5_demo at 77b71094e08391c543d9c65fea5f7cf98cc16eee · airockchip/rknn-toolkit2 · GitHub
笔者实现了Android rtsp yolov5实时检测 50帧
下载地址:
https://download.csdn.net/download/jacke121/89197233
更换yolov5模型
代码地址:
cpp/postprocess.cc
label地址 类别数 anchors
#define LABEL_NALE_TXT_PATH "/storage/emulated/0/Android/data/com.rockchip.gpadc.yolodemo/files/coco_2_labels.txt"static char *labels[OBJ_CLASS_NUM];int anchor0[6] = {25, 59, 18, 99, 57, 76};
int anchor1[6] = {32, 164, 62, 217, 147, 165};
int anchor2[6] = {85, 388, 179, 457, 421, 368};
用的模型是yolov5 relu版
ffmpegrtsp转264裸流
ffmpeg -i rtsp://admin:xxx@192.168.1.6:554/ch1/main/av_stream -vcodec copy -an -f h264 output.h264
ndk下载:
ffmpeg编译android平台-(ubuntu+ndkr16b+ffmpeg3.4.12)_android-ndk-r16b-CSDN博客
格式RK_FORMAT_YCbCr_420_SP:
origin = wrapbuffer_fd(fd, width, height, RK_FORMAT_YCbCr_420_SP, width_stride, height_stride);src = wrapbuffer_fd(mpp_frame_fd, width, height, RK_FORMAT_YCbCr_420_SP, width_stride, height_stride);
android系统rtsp读流进行算法识别
设置权限
<manifest xmlns:android="http://schemas.android.com/apk/res/android"package="your.package.name"><!-- 网络通信权限 --><uses-permission android:name="android.permission.INTERNET"/><!-- 检查网络状态权限 --><uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/><!-- 外部存储读写权限 --><uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/><uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/></manifest>
依赖项:
ffmpeg
mpp
返回的yuv
FFmpegMPPDecoder/src/H264MPPDecoder.cpp at main · Done4/FFmpegMPPDecoder · GitHub
rknn输入数据转换
g_rga_src = wrapbuffer_virtualaddr((void *)inDataRaw, img_width, img_height,RK_FORMAT_RGBA_8888);// convert color format and resize. RGA8888 -> RGB888ret = imresize(g_rga_src, g_rga_dst);
输入数据:
#if ZERO_COPY
#elserknn_input inputs[1];inputs[0].index = 0;inputs[0].type = RKNN_TENSOR_UINT8;inputs[0].size = m_in_width * m_in_height * m_in_channel;inputs[0].fmt = RKNN_TENSOR_NHWC;inputs[0].pass_through = 0;inputs[0].buf = g_rga_dst.vir_addr;
#ifdef EVAL_TIMEgettimeofday(&start_time, NULL);
#endifrknn_inputs_set(ctx, 1, inputs);
这个是Ubuntu系统的:
rk3399pro硬解码(vpu,rtsp)使用 - 简书
https://download.csdn.net/download/weixin_44277869/87771089
这篇关于rknn3588 rstp yolov5的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!