ubuntu18编译安装opencv3.4.3, caffe和openpose, 踩坑记录.

1. 配置

基本配置版本号
CPUIntel® Core™ i5-8400 CPU @ 2.80GHz × 6
GPUGeForce RTX 2070 SUPER/PCIe/SSE2
OSUbuntu18.04
openjdk1.8.0_242
python3.6.9
gcc5.5
g++8.4
opencv3.4.3
cmake3.17.2
protobuf3.0.0

hint:

  1. 如何多版本gcc,g++共存并且切换: https://blog.csdn.net/weixin_43056275/article/details/105124979
  2. 如何安装cmake: https://www.cnblogs.com/jsdy/p/11759247.html
  3. 注意: 编译caffe和openpose所使用的opencv必须版本一致, 不然到最后会报错!!!
  4. opencv版本4.0以上测试openpose会报错:. 错误: opencv-4.0.0/modules/highgui/src/window_gtk.cpp:146: error: (-215:Assertion failed) dst.data == widget->original_image->data.ptr in function ‘cvImageWidgetSetImage’

2. opencv3.4.3安装编译

见我的博客https://blog.csdn.net/weixin_43056275/article/details/106005112

3. caffe安装

见我的博客https://blog.csdn.net/weixin_43056275/article/details/105790929

4. openpose安装

4.1 下载旧版openpose

因为我编译新版openpose时, 出现了has no member named ‘set-gpu-data’openpose.dir/core/arrayCpuGpu.cpp.o’ failed 此类错误, 看了官网谷歌百度都没解决. 于是安装编译了旧版的openpose. 最后成功!
下载地址
https://download.csdn.net/download/weixin_43056275/12402443

4.2 下载模型

打开openpose-master/models

./getModels.sh

最好是提前先下载好, 虽然编译的时候也会自动下载, 但是网速不好会下载不完全, 导致编译失败, 我就因为这个问题看了别人错误的解决措施, 绕了一大圈弯路
如果你在终端下载速度慢, 可以网页下载并放到指定的文件下. coco比较大, 可以等需要用的时候再下载. 他们下载后放置的位置就是他们的网址后半段.
http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/coco/pose_iter_440000.caffemodel

http://posefs1.perception.cs.cmu.edu/OpenPose/models/face/pose_iter_116000.caffemodel

http://posefs1.perception.cs.cmu.edu/OpenPose/models/hand/pose_iter_102000.caffemodel

http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/mpi/pose_iter_160000.caffemodel

http://posefs1.perception.cs.cmu.edu/OpenPose/models/pose/body_25/pose_iter_584000.caffemodel

4.3 编译

在openpose-master路径下
执行

mkdir build
cd build
cmake -DBUILD_CAFFE=OFF  -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.0 -DCaffe_INCLUDE_DIRS=/home/ying/usb/key_points/caffe_train-master/include   -DCaffe_LIBS=/home/ying/usb/key_points/caffe_train-master/build/lib/libcaffe.so  ..
make all -j`nproc`

关闭build caffe, 指定cuda和caffe的路径

4.4 测试

视频测试
在openpose-master路径下

./build/examples/openpose/openpose.bin --video examples/media/video.avi

或者可以保存到本地

在openpose-master路径下

mkdir output

./build/examples/openpose/openpose.bin --video examples/media/video.avi --write_video output/result.avi --write_json output/ --display 0

在这里插入图片描述
图片测试:
mkdir output_image
./build/examples/openpose/openpose.bin --image_dir examples/media/ --face --hand --write_images output_image/ --display 0

./build/examples/openpose/openpose.bin --help可以查看有哪些命令

5. openpose踩坑

问题一:

error详细内容:

ptxas /tmp/tmpxft_00002121_00000000-5_pyramidalLK.ptx, line 9; fatal : Unsupported .version 6.1; current version is ‘6.0’
ptxas fatal : Ptx assembly aborted due to errors
CMake Error at openpose_generated_pyramidalLK.cu.o.Release.cmake:279 (message):
Error generating file
/home/a421/YuWentao/huawei_fatigue_driving_detection/openpose/build/src/openpose/CMakeFiles/openpose.dir/tracking/./openpose_generated_pyramidalLK.cu.o

src/openpose/CMakeFiles/openpose.dir/build.make:112: recipe for target ‘src/openpose/CMakeFiles/openpose.dir/tracking/openpose_generated_pyramidalLK.cu.o’ failed
make[5]: *** [src/openpose/CMakeFiles/openpose.dir/tracking/openpose_generated_pyramidalLK.cu.o] Error 1
make[5]: *** Waiting for unfinished jobs…
CMake Error at openpose_generated_renderFace.cu.o.Release.cmake:279 (message):
Error generating file
/home/a421/YuWentao/huawei_fatigue_driving_detection/openpose/build/src/openpose/CMakeFiles/openpose.dir/face/./openpose_generated_renderFace.cu.o

src/openpose/CMakeFiles/openpose.dir/build.make:63: recipe for target ‘src/openpose/CMakeFiles/openpose.dir/face/openpose_generated_renderFace.cu.o’ failed
make[5]: *** [src/openpose/CMakeFiles/openpose.dir/face/openpose_generated_renderFace.cu.o] Error 1
CMake Error at openpose_generated_renderHand.cu.o.Release.cmake:279 (message):
Error generating file
/home/a421/YuWentao/huawei_fatigue_driving_detection/openpose/build/src/openpose/CMakeFiles/openpose.dir/hand/./openpose_generated_renderHand.cu.o

问题一解决:

指定-DCUDA_TOOLKIT_ROOT_DIR时 不能使用默认的/usr/local/cuda, 需要加上版本号, 正确的应该是: -DCUDA_TOOLKIT_ROOT_DIR=/usr/local/cuda-10.0

问题二:

在成功编译OpenPose后,测试时,报如下错误:

root@/openpose# ./build/examples/openpose/openpose.bin
Starting OpenPose demo…
Configuring OpenPose…
Starting thread(s)…
Desired webcam resolution 1280x720 could not being set. Final resolution: 640x480 in /home/a421/YuWentao/huawei_fatigue_driving_detection/openpose/src/openpose/producer/webcamReader.cpp:WebcamReader():36
Auto-detecting camera index… Detected and opened camera 0.
Auto-detecting all available GPUs… Detected 2 GPU(s), using 2 of them starting at GPU 0.
[libprotobuf ERROR google/protobuf/message_lite.cc:118] Can’t parse message of type “caffe.NetParameter” because it is missing required fields: layer[0].clip_param.min, layer[0].clip_param.max
F0224 20:12:24.419100 309 upgrade_proto.cpp:97] Check failed: ReadProtoFromBinaryFile(param_file, param) Failed to parse NetParameter file: models/pose/body_25/pose_iter_584000.caffemodel
*** Check failure stack trace: ***
@ 0x7f9caf6f60cd google::LogMessage::Fail()
@ 0x7f9caf6f7f33 google::LogMessage::SendToLog()
@ 0x7f9caf6f5c28 google::LogMessage::Flush()
@ 0x7f9caf6f8999 google::LogMessageFatal::~LogMessageFatal()
@ 0x7f9caf294d71 caffe::ReadNetParamsFromBinaryFileOrDie()
@ 0x7f9caf2742ba caffe::Net<>::CopyTrainedLayersFromBinaryProto()
@ 0x7f9cb15246c8 op::NetCaffe::initializationOnThread()
@ 0x7f9cb154066e op::addCaffeNetOnThread()
@ 0x7f9cb1541971 op::PoseExtractorCaffe::netInitializationOnThread()
@ 0x7f9cb15467f0 op::PoseExtractorNet::initializationOnThread()
@ 0x7f9cb153d281 op::PoseExtractor::initializationOnThread()
@ 0x7f9cb1537c91 op::WPoseExtractor<>::initializationOnThread()
@ 0x7f9cb1575b11 op::Worker<>::initializationOnThreadNoException()
@ 0x7f9cb1575c50 op::SubThread<>::initializationOnThread()
@ 0x7f9cb1578b68 op::Thread<>::initializationOnThread()
@ 0x7f9cb1578d6d op::Thread<>::threadFunction()
@ 0x7f9cb08878f0 (unknown)
@ 0x7f9caffa96db start_thread
@ 0x7f9cb02e288f clone
Aborted (core dumped)

问题二解决:

caffe model下载不完全, 参考我上面的4.2手动下载model并放入指定目录.

问题三:

完成编译后, 测试时出现
./build/examples/openpose/openpose.bin --video examples/media/video.avi的时候 出现 OpenCV(4.0.0) /home/ying/usb/Download2/opencv-4.0.0/modules/highgui/src/window_gtk.cpp:146: error: (-215:Assertion failed) dst.data == widget->original_image->data.ptr in function ‘cvImageWidgetSetImage’ .

问题三解决:

原因是, opencv4.0版本过高, 卸载重新安装opencv3.4.3, 具体安装过程可参考我的另一个博客.

问题四:

runtime library [libcublas.so.10.0] in /usr/local/cuda/lib64 may be hidden by files in: /usr/local/lib
/usr/bin/ld: cannot find -lcudart /usr/bin/ld: cannot find -lcurand /usr/bin/ld: cannot find -lcudnn

问题四解决:

原因是之前安装opencv默认直接安装到/usr/local, 导致cmake访问了多个libcublas.so.10.0. 解决: 卸载干净opencv, 手动删除/usr/local/lib中没有删除干净的文件, 如下图.
在这里插入图片描述删除/usr/local/share中的OpenCV, /usr/local/include中的opencv和opencv2.
重新下载编译opencv时, 注意一定要指定到一个空的文件夹, 并且必须要/usr/local下, 不然openpose找不到(就算指定opencv路径也找不到). 比如cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv343 … 指定到/usr/local/opencv343目录下.

错误五:

has no member named ‘set-gpu-data’
openpose.dir/core/arrayCpuGpu.cpp.o’ failed

错误五解决:

这是新版openpose的问题, 安装旧版本的openpose. 我上文有讲.

错误六:

cmake-gui的时候出现.
Caffe not found. Either turn on the BUILD _CAFFE option or specify the path of Caffe includes and libs using -DCaffe_INCLUDE_DIRS and -DCaffe_LIBS.

错误六解决:

这是因为cmake-gui出问题了, 我卸载了cmake-gui重新安装还是有这个问题. 于是我删除build, 使用cmake编译, 不使用cmake-gui就成功了.

如果还有什么不清楚的可以留言. 问题补充可以写在评论区.

  • 2
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 13
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 13
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

王二小、

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值