Toybrick

标题: yolov4-tiny C++版本程序无法打开视频文件 [打印本页]

作者: CQQQQQQQQQQ    时间: 2021-4-1 12:38
标题: yolov4-tiny C++版本程序无法打开视频文件
本帖最后由 CQQQQQQQQQQ 于 2021-4-12 18:10 编辑

        自己训练的Yolov4-tiny模型,使用rknn-toolkite-1.6.0转换成rknn模型,使用论坛上面提供的C++版本的程序,如果使用摄像头采集视频,程序运作正常,帧率在30FPS(受限于摄像头的帧率),但是如果使用本地视频文件,则一直报错,报错信息如下:     
  1. librga:RGA_GET_VERSION:3.02,3.020000
  2. ctx=0x5574a74e90,ctx->rgaFd=3
  3. Rga built version:version:+2017-09-28 10:12:42
  4. This system has 6 processor(s).
  5. Bind NPU process(1) to CPU 5
  6. Bind VideoCapture process to CPU 2
  7. Bind NPU process(0) to CPU 4
  8. Bind Display process to CPU 3
  9. [mpeg4_v4l2m2m @ 0x7f90002750] Could not find a valid device
  10. [mpeg4_v4l2m2m @ 0x7f90002750] can't configure decoder
  11. [ WARN:0] OpenCV | GStreamer warning: GStreamer: pipeline have not been created
  12. [ERROR:0] VIDEOIO(createGStreamerCapture(filename)): raised OpenCV exception:

  13. OpenCV(3.4.7) /home/firefly/Downloads/opencv-3.4.7/modules/videoio/src/cap_gstreamer.cpp:160: error: (-215:Assertion failed) ptr in function 'get'


  14. VIDIOC_REQBUFS: Inappropriate ioctl for device
  15. Fail to open test1_405.mp4
  16. D RKNNAPI: ==============================================
  17. D RKNNAPI: RKNN VERSION:
  18. D RKNNAPI:   API: 1.4.0 (bbe0dfc build: 2020-09-14 14:06:05)
  19. D RKNNAPI:   DRV: 1.6.0 (159d2d3 build: 2021-01-12 15:23:09)
  20. D RKNNAPI: ==============================================
  21. D RKNNAPI: ==============================================
  22. D RKNNAPI: RKNN VERSION:
  23. D RKNNAPI:   API: 1.4.0 (bbe0dfc build: 2020-09-14 14:06:05)
  24. D RKNNAPI:   DRV: 1.6.0 (159d2d3 build: 2021-01-12 15:23:09)
  25. D RKNNAPI: ==============================================
  26. The initialization of NPU Process 0 has been completed.
  27. The initialization of NPU Process 1 has been completed.
复制代码

        网上搜了一下报错信息,可能是没有安装FFmpeg导致的,于是编译安装FFmpeg4.1,依然报错,报错信息如下:
  1. librga:RGA_GET_VERSION:3.02,3.020000
  2. ctx=0x55cfa9de90,ctx->rgaFd=3
  3. Rga built version:version:+2017-09-28 10:12:42
  4. mpi: mpp version: 1614c5d4 author: Caesar Wang debian: add rules for mpp with 20191031
  5. mpp_rt: NOT found ion allocator
  6. mpp_rt: found drm allocator
  7. mpp: deprecated block control, use timeout control instead
  8. mpp: deprecated block control, use timeout control instead
  9. [swscaler @ 0x55cfade7c0] drm_prime is not supported as input pixel format
  10. terminate called after throwing an instance of 'cv::Exception'
  11.   what():  OpenCV(3.4.7) /home/firefly/Downloads/opencv-3.4.7/modules/highgui/src/window.cpp:358: error: (-215:Assertion failed) size.width>0 && size.height>0 in function 'imshow'

  12. Aborted (core dumped)
复制代码
      API使用的是github上1.6.0版本的,请问大家能正确读取视频文件吗?欢迎大佬赐教!
















作者: sunkai    时间: 2021-4-1 15:10
请问一下,c++版本的代码在哪里获取的
作者: CQQQQQQQQQQ    时间: 2021-4-1 16:36
sunkai 发表于 2021-4-1 15:10
请问一下,c++版本的代码在哪里获取的

http://t.rock-chips.com/forum.ph ... ight=C%2B%2B%2Byolo
这个帖子里面的附件有C++版本的代码,你需要注册账号,登陆后才能看到
作者: CQQQQQQQQQQ    时间: 2021-4-2 11:50
本帖最后由 CQQQQQQQQQQ 于 2021-4-12 11:42 编辑

。。。




作者: sunkai    时间: 2021-4-2 14:11
CQQQQQQQQQQ 发表于 2021-4-2 11:50
找到原因了,opencv存储的图片是BGR模式,改成RGB模式就ok了。即程序里面run_process函数中关于cvtColor的 ...

请问一下,你是在3399上面跑的,运行步骤能大概说下吗,是需要添加opencv的包先进行编译再运行吗
作者: CQQQQQQQQQQ    时间: 2021-4-2 14:57
sunkai 发表于 2021-4-2 14:11
请问一下,你是在3399上面跑的,运行步骤能大概说下吗,是需要添加opencv的包先进行编译再运行吗 ...

我是在3399pro上面跑的,要先编译安装opencv,然后按照api文件夹里面的使用说明书操作就可以了,即编译好工程之后,拷贝生成的可执行文件到/tmp文件夹里面运行
作者: sunkai    时间: 2021-4-6 10:56
你好,官方给的opencv中好像不能直接调用   videocapture方法吧,请问您是怎么处理的,编译opencv源文件吗
作者: Devin    时间: 2021-4-7 15:28
你测的20ms是推理时间还是包括了nms等后处理时间?
作者: CQQQQQQQQQQ    时间: 2021-4-12 11:02
sunkai 发表于 2021-4-6 10:56
你好,官方给的opencv中好像不能直接调用   videocapture方法吧,请问您是怎么处理的,编译opencv源文件吗 ...

是的,官方api库文件里面没有videoio.so文件,我自己编译安装的opencv3.4.7,但是现在只能用cameraRead函数,使用videoRead函数会报错,报错信息如下:
[mpeg4_v4l2m2m @ 0x558d7ddbc0] Could not find a valid device
[mpeg4_v4l2m2m @ 0x558d7ddbc0] can't configure decoder
[ WARN:0] OpenCV | GStreamer warning: GStreamer: pipeline have not been created
[ERROR:0] VIDEOIO(createGStreamerCapture(filename)): raised OpenCV exception:

OpenCV(3.4.7) /home/firefly/Downloads/opencv-3.4.7/modules/videoio/src/cap_gstreamer.cpp:160: error: (-215:Assertion failed) ptr in function 'get'
VIDIOC_REQBUFS: Inappropriate ioctl for device

作者: CQQQQQQQQQQ    时间: 2021-4-12 11:04
Devin 发表于 2021-4-7 15:28
你测的20ms是推理时间还是包括了nms等后处理时间?

是包括了nms等后处理时间,
作者: Devin    时间: 2021-4-13 10:49
CQQQQQQQQQQ 发表于 2021-4-12 11:04
是包括了nms等后处理时间,

哦哦,你是在3399pro上测的还是1808上测的
作者: CQQQQQQQQQQ    时间: 2021-4-13 10:50
Devin 发表于 2021-4-13 10:49
哦哦,你是在3399pro上测的还是1808上测的

我在3399pro上面测试的,请问你的3399pro上面能使用videocapture打开本地视频吗?




欢迎光临 Toybrick (https://t.rock-chips.com/) Powered by Discuz! X3.3