VIM3 NPU-yolov3 控制图片接口和获得图片测试结果

我现在遇到这样一个问题:我在更改完main_cv3.cpp并编译成功,随后执行./build_vx.sh生成libnn_yolo_v3.so并拷贝至板子的detect_demo_picture/lib中,我执行sudo ./UNINSTALL,再执行./INSTALL操作,再执行./detect_demo_x11_cv3 2 sewage_outlet.jpg运行成功,检测后的图片保存为output.bmp,这和我main_cv3.cpp修改不同(因为我已经把imwrite output.bmp注释了换成我自己保存图片的路径,根本不可能生成output.bmp图片),我怀疑生成libnn_yolo_v3.so时没用上main_cv3.cpp,导致修改main_cv3.cpp无法发挥作用,请问这是什么原因呢?

@Jack_Xu 你编译main_cv3.app 为什么是生成 libnn_yolo_v3.so ?

编译main_cv3.app不会生成 libnn_yolo_v3.so,现在的问题是main_cv3.app修改后如何发挥作用?

我以为在重新生成libnn_yolo_v3.so的过程中会把修改后的main_cv3.app集成进去,这样main_cv3.cpp的修改才会发挥作用,但结果不是我想的这样

@Jack_Xu 你修改库,才是替换库,你修改的是可执行文件,那你把outpu目录下的可执行文件拿过去板子上运行就好了啊. 运行格式和之前的一样

对于您的解答我不是很理解。我修改main_cv3.cpp没有生成可执行文件啊,main_cv3.cpp是在aml_npu_app中,而板子上需要运行的demo都是在aml_npu_demo_binaries中(用新生成的libnn_yolo_v3.so和yolov3_88.nb来替换),我板子上是没有aml_npu_app这个模块的,不知道如何让修改的main_cv3.cpp发挥作用

这个文件编译后就会生成最终的可执行文件。你要是想自己做开发,还是得了解下这个工程是怎么编译的,还是得去看看Makefile文件。

我修改main_cv3.cpp并执行build_vx_cv3.sh文件,在bin_r_cv3中生成了detect_demo和main_cv3.o文件,您的意思是把detect_demo复制到板子上替换aml_npu_demo_binaries/detect_demo_picture中的detect_demo_x11_cv3吗?

我把bin_r_cv3中生成的detect_demo复制到板子上替换aml_npu_demo_binaries/detect_demo_picture中的detect_demo_x11_cv3,执行运行命令,结果如下:


请问这个“Segmentation fault”是什么原因造成的错误呢?

先检查下npu版本:

$ khadas@Khadas:~$ dpkg -l | grep "aml-npu" | awk '{print $3}'
6.4.3CB

如果不是6.4.3CB你需要更新下系统。

$ sudo apt update
$ sudo apt full-upgrade 
$ sync
$ sudo reboot

如果是6.4.3CB,你可以测试下我们原始的demo,不做任何修改,看看是否会报错。正常是可以跑的,那么你需要检查下你的程序了。

1 Like

请问opencv4必须装4.2版本的吗?我装的是4.2版本但仍然报错呢,还有我在板子上安装opencv4的过程中遇到了很多坑,和电脑上的opencv安装差别极大,建议你们可以整理一下安装过程

@Jack_Xu

$ sudo apt update
$ sudo apt remove opencv3
$ sudo apt install libopencv-dev python3-opencv

卸载旧的,安装官方库自带的就行.ubuntu官方release的就是4.2,所以我们也是用的4.2

我是用make 那种方法安装的opencv4.5遇到很多坑,但执行./detect_demo_x11_cv4命令的时候也会遇到错误(找不到libopencv.imgproc.so.4.2)。你说的这种通过“python3-opencv”安装过程没什么问题,但使用import cv2的时候报"lllegal instruction"错误

khadas@Khadas:~/v4l2_testapp$ python3
Python 3.8.5 (default, Jul 28 2020, 12:59:40) 
[GCC 9.3.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> import cv2
>>> 

我这边没有碰见

库编译时是使用4.2的,所以运行时,是不会去链接4.5的,如果你要用4.5,你就要把编译的SDK里面的opencv也换成4.5

cmake编译是需要设置很多编译选项的,不建议新手使用这种方法.

你一定要用4.5,不使用4.2的理由是什么,demo里面只是用了一些核心的基础opencv函数,这在4.2和4.5里面,在运行效率和实现上是一样的

4 posts were split to a new topic: Npu demo dlopen failed


请问这一项如何选择呢?

Hello @Jack_Xu

不知道怎么选择的直接默认回车就好。


升级后是这样的,是否正确?

@Jack_Xu 这个版本的驱动才是对的,你再试试看


又出现了一个新的错误