通过查找资料和网上的博客,zynq 上移植opencv 代码,可能需要以下几步,通常要先有 opencv代码,然后再有交叉编译出结果,但是这里会使用到一些opencv 的库,所以在zed 板上跑的时候首先要有opencv 的库镜像文件,然后挂载起来,然后才能真正的开始opencv 的测试。
我遇到的问题可能是由于整个过程中有不当之处导致的,和大家都不太一样。
首先查看以下开机以后 /usr/lib 的内容
一旦我们将 opencv_lib_img 挂载到 sd 卡的时候,
mount /mnt/opencv_lib.img /usr
查看 /usr 和 lib 的内容:
执行命令 ./edge_detection.o ./lena.jpg ./lena_edge.jpg
./edge_detection.o: error while loading shared libraries: libstd
c++.so.6: cannot open shared object file: No such file or directory
发现出错原因是有 没有 libstdc++.so.6,但是在没有挂opencv_lib_img 的时候它是存在的,只是现在被覆盖了
挂载到 /usr/lib 文件夹下
mount /mnt/opencv_lib.img /usr/lib
执行命令仍旧出错为
zynq> ./edge_detection.o ./lena.jpg ./lena_edge.jpgrandom: nonblocking pool is initialized
Inconsistency detected by ld.so: dl-deps.c: 622: _dl_map_object_deps: Assertion `nlist > 1' failed!
参考的博客挂载之后
注意 uramdisk 的文件系统实际只有8M ,而opencv_lib.img 有80多M
上面的问题描述的比较乱,但是主要的原因就是在 1 在opencv_img.lib 挂载位置和内容 2 是运行代码的命令
1 针对opencv_img.lib 挂载位置放在 /usr 文件夹下,使其opencv 的库文件在 /usr/lib 文件夹中
mount opencv_img.lib /usr
http://www.eefocus.com/Moonwolf/blog/13-07/295984_84f9d.html
http://blog.csdn.net/dumeifang/article/details/2963223
http://www.aiuxian.com/article/p-310498.html
针对缺少 libstdc++.so.6 的问题,参考博客有三种解决方法,1 将 libstdc++.so.6 复制过去 2 建立软链接 3 重新制作 opencv_img.lib,制作过程中将 libstdc++.so.6 压缩进镜像文件,我用的第一种方法试是可以的。
2 测试 使用 ./edge_detection.o ./lena.bmp ./lena_edge.bmp 命令无反应,使用命令 ./edge_detection.o lena.bmp out.bmp 出结果。