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

时间:2017-05-29 06:52:05

标签: opencv caffe

我已经禁用了GPU的caffeled,然后

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?

2 个答案:

答案 0 :(得分:1)

Caffe实际上认识到opencv,那些引用是在opencv3.2中被丢弃的方法,但在opencv 3.1.0或更早版本中可用。在安装3.2时遇到同样的问题,并且eventualy降级到3.1.0解决了问题对我来说,here是安装opencv 3.1.0并根据

的一个很好的指南

this讨论,似乎标准是支持Ubuntu源代码中提供的opencv,我认为你现在无法通过apt-get安装opencv3.2,只需要构建来自源

答案 1 :(得分:0)

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

为了解决OpenCV未发现的问题,您需要在Makefile.conf文件(OpenPose和Caffe中的文件)中启用,使用OpenCV 3标志。