openpose 编译告诉未定义引用 cv::VideoCapture::VideoCapture(cv::String const&)

openpose compilation tells undefined reference to cv::VideoCapture::VideoCapture(cv::String const&)

我在禁用GPU的情况下编译了caffe,然后

cp caffe/build/Makefile openpose/Makefile.conf

运行

 make all -j 6

遇到这些错误:

-- Generating done
-- Build files have been written to: /path/to/caffe/build
CXX/LD -o ._release/examples/tutorial_thread/1_openpose_read_and_display.bin
._release/lib/libopenpose.so: undefined reference to `cv::VideoCapture::VideoCapture(cv::String const&)'
._release/lib/libopenpose.so: undefined reference to `cv::VideoCapture::set(int, double)'
._release/lib/libopenpose.so: undefined reference to `op::renderPartAffinityFieldGpu(float*, op::PoseModel, cv::Size_<int> const&, float const*, cv::Size_<int> const&, float, int, float)'
._release/lib/libopenpose.so: undefined reference to `cv::VideoCapture::release()'
._release/lib/libopenpose.so: undefined reference to `op::renderBodyPartsGpu(float*, op::PoseModel, cv::Size_<int> const&, float const*, cv::Size_<int> const&, float, float)'
._release/lib/libopenpose.so: undefined reference to `cv::VideoCapture::operator>>(cv::Mat&)'

找不到opencv,我从源代码编译了最新的opencv 3.2-dev,所有opencv程序(c++和python)都可以工作,那么为什么openpose找不到opencv?

Caffe 实际上识别了 opencv,这些引用是在 opencv3.2 中被丢弃的方法,但在 opencv 3.1.0 或更早版本中可用 version.i 在安装 3.2 并最终降级到 3.1 时遇到了同样的问题。 0 为我解决了这个问题,here 是安装 opencv 3.1.0 的一个很好的指南,并且根据

this 讨论,似乎标准是支持 Ubuntu 源中可用的 opencv,我认为你现在不能通过 apt-get 安装 opencv3.2,只有需要从源代码构建

使用CMake安装器(推荐一个):

CMake 安装程序绝不会出现此错误,因此我建议您使用推荐的安装程序。

使用 Makefile 安装程序(已弃用):

I have compiled caffe with GPU disabled: 您不能为 OpenPose 禁用 GPU(也不能禁用 OpenPose 将使用的 Caffe)。抱歉,CPU 代码根本没有完成(考虑到速度非常慢,目前预计不会完成)。您将不得不使用 CUDA + cuDNN。

为了修复 OpenCV 未找到问题,您需要在两个 Makefile.conf 文件(来自 OpenPose 和 Caffe 的文件)中启用使用 OpenCV 3 标志。