# OpenCV-python 构建流程及使用方法 ## 1、构建流程 ### 1.1 容器创建及基础环境搭建   在 61 节点上创建容器:
```bash # 容器创建 docker run -i -t --name opencv --device=/dev/kfd --network=host --device=/dev/dri --cap-add=SYS_PTRACE -p 6666:6006 --security-opt seccomp=unconfined -v /opt/hyhal:/opt/hyhal/:ro -v /parastor/home/fengzch/:/home/ --group-add video --privileged=true --shm-size 16G 8deabd4d542a ```   创建好容器之后,安装DTK、torch、numpy、fastpt:
```bash # DTK 安装 cd /opt wget http://10.6.10.68:8000/dtk-pkg/dtk25.04/20250124/DTK-25.04-rc4-ubuntu20.04-x86_64.tar.gz tar -zxvf DTK-25.04-rc4-ubuntu20.04-x86_64.tar.gz # torch 安装 cd / mkdir test cd test wget http://10.6.10.68:8000/customized/pytorch/dtk25.04-rc4/torch-2.4.1%2Bdas.opt1.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl pip install torch-2.4.1+das.opt1.dtk2504-cp310-cp310-manylinux_2_28_x86_64.whl # fastpt 安装 # 下载地址:https://download.sourcefind.cn:65024/4/main/fastpt/DAS1.5 pip install fastpt-2.0.0+das.dtk2504-py3-none-any.whl pip install numpy==1.24.3 pip install wheel==0.45.1 pip install scikit-build ``` ### 1.2 代码拉取   拉取Pytorch、Opencv、Opencv-contrib 以及 Opencv-python 代码:
```bash # Pytorch 代码拉取 cd /test git clone -b 2.4.1-dev http://10.6.10.68/dcutoolkit/deeplearing/pytorch.git # OpenCV 代码拉取 cd /test git clone http://10.6.10.68/fengzch/opencv.git # OpenCV_contrib 代码拉取,该模块与 opencv 在同一目录下 cd /test git clone http://10.6.10.68/fengzch/opencv_contrib.git # OpenCV-Python 代码拉取 cd /test git clone http://10.6.10.68/fengzch/opencv-python.git ``` ### 1.3 环境初始化   初始化环境:
```bash source /opt/dtk-25.04-rc4/env.sh source /opt/dtk-25.04-rc4/cuda/env.sh export TORCH_PATH=/usr/local/lib/python3.10/site-packages/torch export HIP_TORCH_PATH=/test/pytorch export LD_LIBRARY_PATH=/usr/local/lib/python3.10/site-packages/torch/lib:$LD_LIBRARY_PATH export USE_FASTPT_CUDA=True # 下面的两个环境变量需要开启 export CMAKE_ARGS="-DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr/local -DCMAKE_C_COMPILER=/usr/bin/gcc-9 -DCMAKE_CXX_COMPILER=/usr/bin/g++-9" export ENABLE_CONTRIB=1 ``` ### 1.4 依赖下载   下载相关依赖:
```bash sudo apt update sudo apt install -y build-essential cmake git pkg-config libgtk-3-dev libavcodec-dev libavformat-dev libswscale-dev libv4l-dev libxvidcore-dev libx264-dev libjpeg-dev libpng-dev libtiff-dev gfortran openexr libatlas-base-dev libhdf5-mpich-dev libhdf5-dev libvtk6-dev libopenblas-dev libeigen3-dev python3-dev python3-pip libogre-1.12-dev libxaw7-dev # apt无法下载时处理 # 备份原镜像源 sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak # 将原镜像源更换为阿里云镜像源 sudo sed -i 's/security.ubuntu.com/mirrors.aliyun.com/g' /etc/apt/sources.list # 如果还有错误,则添加清华镜像源/etc/apt/sources.list deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-updates main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-backports main restricted universe multiverse deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ focal-security main restricted universe multiverse ``` ### 1.5 npps 库下载拷贝   目前,DTk 中暂未提供 npps 动态库,因此暂时使用 cuda 原生的 npps 库:
```bash cp /test/opencv-python/npps/libnpps* /opt/dtk-25.04-rc4/cuda/lib64/ ``` ### 1.6 OIS 编译构建(ovis 模块依赖,默认ovis 模块不构建)   由于,Opencv_contrib 中的 ovis 模块需要该库的支持,所以需要构建相关依赖库,编译构建指令如下:
```bash cd /test git clone http://10.6.10.68/fengzch/ois.git cd ois mkdir build && cd build && cmake ../ make -j32 install ``` **PS: 如果需要构建 ovis 模块,在 setup.py 文件的 226 行 "-DBUILD_opencv_ovis" 设为 ON** ### 1.7 ogre 编译构建(ovis 模块依赖,默认ovis 模块不构建)   编译构建指令如下:
```bash cd /test git clone http://10.6.10.68/fengzch/orge.git cd orge mkdir build && cd build && cmake ../ make -j32 install ``` ### 1.8 创建软链接   在 OpenCV-Python 中创建软链接到OpenCV 和 OpenCV_Contrib:
```bash cd /test/opencv-python ln -sf ../opencv opencv ln -sf ../opencv_contrib opencv_contrib ``` ### 1.9 编译 wheel 包   执行下面的指令,编译 wheel 包
```bash cd /test/opencv-python python setup.py bdist_wheel ``` ### 1.10 安装使用 ```bash cd /test/opencv-python/dist pip install opencv-4.8.0+das.opt1.dtk2504-cp310-cp310-linux_x86_64.whl # 验证 # python # import cv2 # cv2.__version__ # '4.8.0' # cv2.__hcu_version__ # '4.8.0+das.opt1.dtk2504' ``` ## 2 OpenCV 使用   如果直接使用提供的 wheel 包,首先按照1.1、1.2配置好基础环境,接着通过 pip install 安装 **(需要首先安转 numpy:pip install numpy==1.24.3)**,**(如果需要 ovis 模块,需要手动编译 OIS 和 ogre,)**最后安装 libxaw7-dev
```bash pip install numpy==1.24.3 sudo apt install -y libxaw7-dev pip install ```