安装 pip 时在 C++ 中包含 OpenCV

Big*_*Bro 6 opencv g++ pip

我已经使用 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++世界的新手,我承认我对构建和链接过程有点困惑。任何帮助将不胜感激 ;)

小智 1

我也试图做同样的事情,如果你真的想要的话,这是可以做的:)我用来编译的命令如下:

g++ -g {file} -o {fileBasenameNoExtension} `pkg-config --cflags --libs opencv4`
Run Code Online (Sandbox Code Playgroud)

但是,如果 opencv4 包是通过 pip 安装的,那么您可能无法立即识别它。因此,您必须opencv4.pc通过将该文件的路径添加到PKG_CONFIG_PATH环境变量来定义包文件的路径。我的是:

  • */home/{用户}/anaconda3/pkgs/opencv-4.6.0-py39hd653453_2/lib/pkgconfig"

如果有人想使用 CMakeList,还有一种方法。查看/sf/answers/4441929061/答案。

为了使find_package(OpenCV REQUIRED)工作正常,您必须通过将以下行OpenCV_DIR添加到您的 CMakeList 来定义 OpenCV cmake 文件的路径(替换为您的确切位置):

set(OpenCV_DIR "/home/{user}/anaconda3/pkgs/opencv-4.6.0-py39hd653453_2/lib/cmake/opencv4")
Run Code Online (Sandbox Code Playgroud)

然后在您的代码中您可以包含 OpenCV 标头

#include <opencv2/opencv.hpp>
Run Code Online (Sandbox Code Playgroud)

注意:我的 OpenCV pip 安装不包含一些依赖项,例如libQt*libopenjp2等,所以我仍然需要解决这个问题才能让它工作:)