在pkg-config搜索路径中未找到opencv包。

80

我已经按照https://help.ubuntu.com/community/OpenCV的指南安装了OpenCV。

$ sudo su
$ sudo apt-get install build-essential
$ sudo apt-get install libavformat-dev
$ sudo apt-get install ffmpeg
$ sudo apt-get install libcv2.3 libcvaux2.3 libhighgui2.3 python-opencv opencv-doc libcv-dev libcvaux-dev libhighgui-dev

现在当我执行"pkg-config --cflags --libs opencv"时,会出现以下错误:

Package opencv was not found in the pkg-config search path.
Perhaps you should add the directory containing `opencv.pc'
to the PKG_CONFIG_PATH environment variable
No package 'opencv' found

我该如何解决这个问题?

-------更新-------

好的,我找到了解决办法...

我创建了一个名为“opencv.pc”的文件并将其复制到“/usr/local/lib/pkgconfig”中,然后我添加了以下两行到“.bashrc”文件中:

PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig
export PKG_CONFIG_PATH

完成啦!现在一切都没问题了。

文件内容如下:

prefix=/usr
exec_prefix=${prefix}
includedir=${prefix}/include
libdir=${exec_prefix}/lib

Name: opencv
Description: The opencv library
Version: 2.x.x
Cflags: -I${includedir}/opencv -I${includedir}/opencv2
Libs: -L${libdir} -lopencv_calib3d -lopencv_imgproc -lopencv_contrib -lopencv_legacy -lopencv_core -lopencv_ml -lopencv_features2d -lopencv_objdetect -lopencv_flann -lopencv_video -lopencv_highgui

更新 - 2014

看起来Ubuntu社区已经完成了有关安装OpenCV的文档,现在您只需要从https://github.com/jayrambhia/Install-OpenCV/blob/master/Ubuntu/opencv_latest.sh下载安装脚本并执行即可。


我不确定,但我认为前缀是opencv安装的位置。我手动编译它,我得到了与你相同的错误,所以我将尝试更改前缀来解决问题。 - lesolorzanov
2
截至2019年,我仍然使用这个来修复我的Mac上的OpenCV。 - Audrius Meškauskas
2
在Ubuntu 20.04中安装了libopencv-dev后,文件opencv4.pc已经自动存在于/usr/local/lib/pkgconfig/目录下。我需要做的唯一一件事情就是复制(或建立符号链接)该文件并将其命名为opencv.pc - fabian
在我的情况下,没有/usr/local/lib/pkgconfig这个目录。 - KansaiRobot
13个回答

53

根据你的问题猜测你正在使用Ubuntu(或衍生版本)。

如果你使用:

apt-file search opencv.pc

那么你会看到你需要安装libopencv-dev

在安装后,pkg-config --cflags opencvpkg-config --libs opencv应该如预期一样工作。


在Ubuntu 14.04上搜索libopencv-dev。 - Charles L.

51

使用 OpenCV 4.0 版本;

  • 在构建参数中添加 -DOPENCV_GENERATE_PKGCONFIG=ON
  • 使用 pkg-config --cflags --libs opencv4 来代替opencv。

1
这是什么意思? - KansaiRobot
较新的Linux版本已经升级到了OpenCV 4,而不是OpenCV 3。如果您的系统安装了OpenCV 4版本,则需要使用pkg-config --cflags --libs opencv4命令,而不是pkg-config --cflags --libs opencv。 - Nuwan Dharshana
你确定构建参数是 -DOPENCV_GENERATE_PKGCONFIG=ON 而不是 -D OPENCV_GENERATE_PKGCONFIG=ON 吗?我认为 -D 后面应该有空格,对吗? - Alexander Hörl
不,这里不应该有空格。 - undefined
1
正如其他答案中提到的那样,对于某些版本的OpenCV 4.X,标志需要更改为-D OPENCV_GENERATE_PKGCONFIG=YES,而不是ON - undefined

7
当你运行cmake时,请添加额外的参数 -D OPENCV_GENERATE_PKGCONFIG=YES (这将生成opencv.pc文件)。
然后像以前一样使用make和sudo make install。
在使用名称时,请使用opencv4而不是仅使用opencv,例如: pkg-config --modversion opencv4

1
谢谢。现在是2022年5月,这个修复了OpenCV 4.5.5的问题。干杯,;-) - intumwa

6
似乎ubuntu社区已经完成了有关安装openCV的文档,所以现在你只需从这里下载安装脚本并执行即可。不要忘记将其设置为可执行文件:
chmod +x opencv_latest.sh

那么

./opencv_latest.sh

1
你知道如何在使用上述脚本安装OpenCV后卸载它吗? - Aza T
这个解决方案本身不能用来安装opencv。在进行这一步之前需要做什么? - jcairney
这似乎不支持激活CUDA支持。 - KansaiRobot

3

我按照https://docs.opencv.org/trunk/d7/d9f/tutorial_linux_install.html上的步骤安装了opencv。

除了第二步,使用: cmake -D CMAKE_BUILD_TYPE=Release -D OPENCV_GENERATE_PKGCONFIG=YES -D CMAKE_INSTALL_PREFIX=/path/to/opencv/ ..

然后找到opencv4.pc文件,我的在opencv/build/unix-install/目录下。

现在运行命令: $ export PKG_CONFIG_PATH=/path/to/the/file


2

当我尝试在Debian 9.8上编译Go包时,我遇到了同样的错误:

Original Answer翻译成"最初的回答"

# pkg-config --cflags  -- libssl libcrypto
Package libssl was not found in the pkg-config search path.
Perhaps you should add the directory containing `libssl.pc'

问题在于pkg-config.pc文件中搜索软件包元信息。这些文件来自dev包。因此,即使我已经安装了libssl,我仍然会遇到错误。解决方法是运行:

sudo apt-get install libssl-dev

这将安装所需的.pc文件。

"Original Answer"翻译成:"最初的回答"

sudo apt-get install libssl-dev

2

首先,我建议你使用“Synaptic软件包管理器”。只需进入Ubuntu软件中心并搜索“Synaptic软件包管理器”即可。这样做的好处是所有需要的软件包都可以在此轻松获取。其次,它会自动配置所有路径。现在安装它,然后在那里搜索opencv软件包,如果你找到了一个带有绿色框的软件包,则已经安装完成,否则该软件包未正确安装,因此您需要重新安装,但这次从软件包管理器中进行。如果已安装,则只需将OpenCV_DIR变量填充为opencv的路径(包含OpenCVConfig.cmake文件)。

    export OpenCV_DIR=<path_of_opencv>

2
为 MacOS 用户编写此答案。
首先安装opencv,使用以下命令:
brew install opencv 
or brew install opencv@x (x = 2,4)  

我们需要在PKG_CONFIG_PATH中设置opencv.pc的路径,以避免出现这个错误。当您使用brew安装opencv时,控制台会显示类似于以下内容:
 For pkg-config to find opencv@2 you may need to set:
  export PKG_CONFIG_PATH="/opt/homebrew/opt/opencv@2/lib/pkgconfig"

正如错误提示所述,原因是 OpenCV 没有在 PKG_CONFIG_PATH 变量中。首先使用以下命令检查变量中的内容:

echo $PKG_CONFIG_PATH

如果要将 opencv.pc 的位置包含在 PKG_CONFIG_PATH 中,请使用以下命令:

  echo 'export PKG_CONFIG_PATH="/opt/homebrew/opt/opencv/lib/pkgconfig:$PKG_CONFIG_PATH"' >> ~/.zshrc

1

来自 OpenCV 4.0:

在 CMake 构建参数中添加 -DOPENCV_GENERATE_PKGCONFIG=YES

使用 YESON 不再起作用。

示例:

cmake -D CMAKE_BUILD_TYPE=RELEASE \
  -D CMAKE_INSTALL_PREFIX=/usr/local \
  -DWITH_V4L=ON \
  -DWITH_LIBV4L=ON \
  -DWITH_FFMPEG=ON \
  -DOPENCV_GENERATE_PKGCONFIG=YES \
  -D BUILD_EXAMPLES=ON ..

0

$ apt-file 搜索 opencv.pc $ ls /usr/local/lib/pkgconfig/ $ sudo cp /usr/local/lib/pkgconfig/opencv4.pc /usr/lib/x86_64-linux-gnu/pkgconfig/opencv.pc $ pkg-config --modversion opencv


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接