问题描述:
为了方便管理项目和python的包,我们一般会为一个项目创建专门的虚拟环境,在树莓派上用编译源码的方式安装OpenCV4(或其他版本),进行cmake时有时会定位不到创建的虚拟环境中的python3 interpreter(我这里是想把OpenCV安装在python3的环境下)
解决办法:
cmake的参数如下:
- CMAKE_BUILD_TYPE=RELEASE \ 代表编译类型为发行版本
- CMAKE_INSTALL_PREFIX=/usr/local \ 安装路径
- INSTALL_C_EXAMPLES=ON \ C demo
- INSTALL_PYTHON_EXAMPLES=ON \ Python demo
- OPENCV_EXTRA_MODULES_PATH=/home/pi/Downloads/opencv_contrib-4.5.5/modules \ OpenCV Contrib路径
- BUILD_EXAMPLES=ON \ 编译demo
- WITH_LIBV4L=ON \ 开启Video for Linux
- PYTHON3_EXECUTABLE=/usr/lib/python3.9 \ Python3路径
- PYTHON_INCLUDE_DIR=/usr/include/python3.9 \ Python3 include文件夹
- PYTHON_LIBRARY=/usr/lib/arm-linux-gnueabihf/libpython3.9.so \ Python3库
- PYTHON3_NUMPY_INCLUDE_DIRS=/usr/lib/python3/dist-packages/numpy/core/include \ Python3 Numpy安装路径
…
最后的两个点也是命令的一部分,不要去掉。
cmake执行时间比较长,要稍微等一段时间。
可以看到参数中有可以指定python3和numpy路径的选项:PYTHON3_EXECUTABLE,PYTHON3_NUMPY_INCLUDE_DIRS。如果默认不设置参数,则会向上面一样定位到系统自带的python版本(/usr/lib开头的路径)。所以我们只要设置这两个参数,将其手动定位到自己创建的虚拟环境中的python3版本就可以了,如下:
-D PYTHON3_EXECUTABLE=/home/pi/.virtualenvs/py3cv4/bin/python3 \
-D PYTHON3_NUMPY_INCLUDE_DIRS=home/pi/.virtualenvs/py3cv4/lib/python3.7/site-packages/numpy/core/include \
注:蓝色的部分是我的虚拟环境路径,替换成你自己的就行,注意看后面的python版本自己系统里的是什么,相应地做修改。cmake成功后可以在窗口中看见结果:
PS:就在今晚痛苦的编译过程结束了,哈哈哈哈哈哈哈哈