我已经安装了带有pip(pip3 install opencv-python
(的OpenCV 4.4,它在python中运行得很好。
然而,我现在想切换到C++(既是为了学习,也是为了看看我能获得什么性能增益(,例如执行它,但我不知道如何使用g++
正确编译它,以包括OpenCV的头。
运行cv2.__file
会得到'.../.local/lib/python3.8/site-packages/cv2/cv2.cpython-38-x86_64-linux-gnu.so'
。
如果可能的话,我更愿意只使用g++
,而不是像CMakeList这样的工具来准确地理解我在做什么。作为C++
世界的新手,我承认我对整体构建和链接过程有点困惑。如有任何帮助,我们将不胜感激;(
我也在尝试做同样的事情,如果你真的想做的话,可以这样做:(我用来编译的命令如下:
g++ -g {file} -o {fileBasenameNoExtension} `pkg-config --cflags --libs opencv4`
然而,如果使用pip安装opencv4包,则可能无法开箱即用地识别它。因此,您必须通过将包文件opencv4.pc
的路径添加到PKG_CONFIG_PATH
环境变量来定义该文件的路径。我的是:
- */home/{user}/anaconda3/pkgs/opencv-46.60-py39hd653453_2/lib/pkgconfig">
如果有人想使用CMakeList,还有一种方法。查看https://stackoverflow.com/a/63456129/2039339答复
为了使find_package(OpenCV REQUIRED)
正常工作,您必须通过将以下行添加到CMakeList(替换为您的确切位置(来设置OpenCV_DIR
来定义OpenCV cmake文件的路径:
set(OpenCV_DIR "/home/{user}/anaconda3/pkgs/opencv-4.6.0-py39hd653453_2/lib/cmake/opencv4")
然后在你的代码中,你可以包括OpenCV标题
#include <opencv2/opencv.hpp>
注意:然而,我的OpenCV pip安装不包含一些依赖项,如libQt*
或libopenjp2
等,所以我仍然需要对此进行工作:(