官方给的手册是用DockerFile创建一个镜像,没有说怎么用已有镜像访问相机。
容器内部访问海康相机
暂时试过一次,不知道有没有其他方法--后面发现改环境变量也可以。
根据已有镜像创建容器(镜像是拉取的nvidia/cuda:11.0.3-cudnn8-devel-ubuntu20.04后又加了一堆自己的环境重新打包的镜像)
docker run -it -e LD_PRELOAD=/opt/MVS/lib/64/libMvCameraControl.so --device /dev/bus/usb/ -v /dev/bus/usb/:/dev/bus/usb/ 5dfa399a3006(镜像id) /bin/bash
//--device 支持与其它外部设备的连接,同时避免程序间数据传输的时间损失和性能损失
-e LD_PRELOAD=/opt/MVS/lib/64/libMvCameraControl.so环境变量,添加海康相机的动态库到容器中,但是容器里没有,需要下面步骤
在容器里创建路径/opt/MVS/lib/64/
打开另一个终端,将海康相机相关的库拷贝到指定位置
按照官方手册,将海康的库/opt/MVS/lib/64/和源码/opt/MVS/Samples/64/Python/下的py文件...拷贝到一个文件夹中/opt/MVS/Samples/64/Python/MvImportAll,源码内部引用的路径改成相对路径把文件夹拷贝到容器里
docker cp -L /opt/MVS/Samples/64/Python/MvImportAll(本机路径) (容器id):/opt/MVS/lib/64/(容器内路径)
进入容器
docker exec -it (容器id) /bin/bash
验证相机能否正常访问
cd /opt/MVS/lib/64
python3 GrabImage.py
如下图:
**改环境变量
直接改容器内部的环境变量,代码内的路径就不用改了,也不用创建新的容器。
vim ~/.bashrc
添加下面几行到.bashrc文件中保存
export MVCAM_SDK_PATH=/opt/MVS
export MVCAM_COMMON_RUNENV=/opt/MVS/lib
export LD_LIBRARY_PATH=/opt/IDMVS/lib/linux64{LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}}
export LD_LIBRARY_PATH=/opt/MVS/lib/64:/opt/MVS/lib/32:$LD_LIBRARY_PATH
conda activate paddle#这句可以进入命令行后自动进入paddle环境
最后再更新一下 source ~/.bashrc