需要做template match, 比较注重时间,因此opencv 的普通版本不适用。需要用GPU 的。
下载
git clone https://github.com/opencv/opencv.git
git clone https://github.com/opencv/opencv_contrib.git
确保准备好以下内容
1: visual studio (不是vs code)
2:下载后的两个包裹会放在以下结构
这样放的原因是我Ubuntu的Home容量不够多,导致我需要把这些东西放在另一个盘上,其次是这样安装比较干净。
需要自己额外添加 build
和 install
两个 folders
安装要用的conda 环境(optional)
conda create --name detection python=3.9
pip install numpy
conda install -c conda-forge cudatoolkit=11.8 cudnn
Cmake 里需要更改的选项
- 填完以下的两个框后
- 就点
configure
, 这样它就去找opencv那个folder的对应cmake文件,把需要的信息列表显示出来
3. 以下是要修改的项目(在search
里输入以下内容寻找并打勾,不确定的都打上就行) - Fast_math
- CuDA related(with cuda, opencv_dnn_cuda)
- opencv world
- extra
- python 3
- prefix
- config_ 删了只剩下release
以下是Python3相关会填入的内容
Ubuntu 版本
/media/xxx/cozynest/anaconda3/envs/detection/bin/python
/media/xxx/cozynest/anaconda3/envs/detection/include/python3.9
/media/xxx/cozynest/anaconda3/envs/detection/lib/libpython3.9.so
/media/xxx/cozynest/anaconda3/envs/detection/lib/python3.9/site-packages/numpy/core/include/numpy
/media/xxx/cozynest/anaconda3/envs/detection/lib/python3.9/site-packages
Windows 版本
F:/build_opencv/install
F:/build_opencv/opencv_contrib/modules
F:/anaconda3/envs/detection/python.exe
F:/anaconda3/envs/detection/include
F:/anaconda3/envs/detection/libs/python3.lib
F:/anaconda3/envs/detection/Lib/site-packages/numpy/core/include
F:/anaconda3/envs/detection/Lib/site-packages
- 然后点
configure
,继续添加CUDA 的信息,直到在opencv
那一个部分里,Python3 不再出现在unavailable
里 - 最后才是
generate
安装cmake后的包裹
在命令行:
用detection的环境打开
nproc
make -j24
比如我有24 cores
这一步比较时间长
最后得到:
Linking CXX shared module …/…/lib/python3/cv2.cpython-39-x86_64-linux-gnu.so
sudo make install
例子:/media/xxx/cozynest/anaconda3/envs/detection/lib/python3.9/site-packages/cv2/python-3.10
推荐用anaconda的terminal:
cmake --build "F:\build_opencv\build" --target INSTALL --config Release
以下是最终的成品
测试
conda 同一个 环境打开terminal:
python
import cv2
cv2.cuda.getCudaEnabledDeviceCount()
如果安装成功就会返回 1
注意
install 这个文件夹不能删!!!所有的conda和 GPU opencv 的联系都靠它
报错
config files not found
这里有可能会出现configure的文件找不到的错误,可以直接copy paste Python 版本的文件,根据缺失文件的名字添加。
上面图片中 config.py, config-3.py 和 config-3.9.py 都是手动制作的。
debug 模式 报错: `GLIBCXX_3.4.30’ not found 没装
在 conda的环境下的terminal输入:
conda install -c conda-forge libstdcxx-ng
4090的GPU 测试:
使用普通的python-opencv template match 耗时0.089秒。
GPU 版本:0.0065秒
快了13.69倍
Oh YEAH, case sealed