ubuntu18.04编译Open Pose 1.7

1、编译opencv 和 opencv_contrib

1.1安装最新版本opencv4.5.3(跳过)-caffee版本不匹配

下载并解压opencv_contrib

wget https://github.com/opencv/opencv_contrib/archive/refs/tags/4.5.3.zip
unzip opencv_contrib-4.5.3.zip

下载并解压opencv

https://github.com/opencv/opencv/archive/refs/tags/4.5.3.zip
unzip opencv-4.5.3.zip

创建构建目录并进入该目录

mkdir opencv-4.5.3/build
cd opencv-4.5.3/build

安装必要的包

sudo apt-get install build-essential
sudo apt-get install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt-get install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff-dev libjasper-dev libdc1394-22-dev

注掉anaconda的环境配置
在这里插入图片描述

vi ~/.bashrc

保存配置

source ~/.bashrc

执行cmake

这里看自己文件夹python版本
PYTHON_DEFAULT_EXECUTABLE
PYTHON3_INCLUDE_DIR

cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D OPENCV_EXTRA_MODULES_PATH=../../opencv_contrib-4.5.3/modules -D PYTHON_DEFAULT_EXECUTABLE=/usr/bin/python3.8 -D BUILD_opencv_python3=ON -D BUILD_opencv_python2=OFF -D PYTHON3_EXCUTABLE=/usr/bin/python3.8 -D PYTHON3_INCLUDE_DIR=/usr/include/python3.8 -D WITH_CUDA=OFF -D OPENCV_GENERATE_PKGCONFIG=ON -D WITH_GTK_2_X=ON ..

如果看到如下信息,说明cmake执行成功

-- Configuring done
-- Generating done
-- Build files have been written to: xxx/opencv-4.5.3/build

执行编译

make -j8

不报错的话即编译成功。
安装

sudo make install

如果要卸载

sudo make uninstall

1.2安装opencv3.4.3

1安装所需要的依赖

sudo apt install build-essential
sudo apt install cmake git libgtk2.0-dev pkg-config libavcodec-dev libavformat-dev libswscale-dev
sudo apt install python-dev python-numpy libtbb2 libtbb-dev libjpeg-dev libpng-dev libtiff5-dev libdc1394-22-dev         # 处理图像所需的包
sudo apt install libavcodec-dev libavformat-dev libswscale-dev libv4l-dev liblapacke-dev
sudo apt install libxvidcore-dev libx264-dev         # 处理视频所需的包
sudo apt install libatlas-base-dev gfortran          # 优化opencv功能
sudo apt install ffmpeg

2.去官网下载opencv,在本教程中选用的时opencv3.4.6

https://opencv.org/releases/page/3/
 wget https://github.com/opencv/opencv/archive/3.4.6.zip

3安装依赖库

sudo apt update
sudo apt install cmake  
sudo apt install build-essential libgtk2.0-dev libavcodec-dev libavformat-dev libjpeg.dev libtiff4.dev libswscale-dev libjasper-dev  

3解压

unzip opencv-3.4.6.zip
cd opencv-3.4.6
mkdir build
cd build

4cmake

cmake -D WITH_OPENGL=ON -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local/opencv343 ..

成功

在这里插入图片描述

5执行编译

sudo make -j8

6执行命令

sudo make install

7配置环境
sudo make install 执行完毕后OpenCV编译过程就结束了,接下来就需要配置一些OpenCV的编译环境首先将OpenCV的库添加到路径,从而可以让系统找到

sudo gedit /etc/ld.so.conf.d/opencv.conf 

执行此命令后打开的可能是一个空白的文件,不用管,只需要在文件末尾添加

/usr/local/lib  

执行如下命令使得刚才的配置路径生效

sudo ldconfig  

配置bash

sudo gedit /etc/bash.bashrc  

在最末尾添加

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

保存,执行如下命令使得配置生效

source /etc/bash.bashrc  

更新

sudo updatedb  

如果没有安装执行

sudo apt-get install mlocate

8测试
至此所有的配置都已经完成,下面用一个小程序测试一下
cd到opencv-3.4.6/samples/cpp/example_cmake目录下
我们可以看到这个目录里官方已经给出了一个cmake的example我们可以拿来测试下
按顺序执行

cmake .
make
./opencv_example

2、编译caffe

下载并解压源代码:

wget -c https://codeload.github.com/BVLC/caffe/zip/f019d0dfe86f49d1140961f8c7dec22130c83154 -O caffe1.zip
unzip caffe1.zip

安装库

$ sudo apt-get update 
$ sudo apt-get install libprotobuf-dev libleveldb-dev libsnappy-dev libopencv-dev  libhdf5-serial-dev  protobuf-compiler
$ sudo apt-get install --no-install-recommends libboost-all-dev
$ sudo apt-get install libatlas-base-dev liblmdb-dev

修改文件

cd caffe1
 protoc src/caffe/proto/caffe.proto --cpp_out=.
 mkdir include/caffe/proto
 mv src/caffe/proto/caffe.pb.h include/caffe/proto

修改Makefile.config

cp Makefile.config.example Makefile.config
# 根据本机环境修改 Makefile.config 
...
将
#USE_CUDNN := 1
修改成: 
USE_CUDNN := 1
...
 
...
#如果此处是OpenCV2,则不用修改#OPENCV_VERSION := 3 
修改为: 
OPENCV_VERSION := 3
...
 
...
将
#WITH_PYTHON_LAYER := 1 
修改为 
WITH_PYTHON_LAYER := 1
...
 
...
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib 
修改为: 
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial
LIBRARY_DIRS := $(PYTHON_LIB) /usr/local/lib /usr/lib /usr/lib/x86_64-linux-gnu /usr/lib/x86_64-linux-gnu/hdf5/serial       
...
 
...
将
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
        -gencode arch=compute_20,code=sm_21 \
        -gencode arch=compute_30,code=sm_30 \
        -gencode arch=compute_35,code=sm_35 \
        -gencode arch=compute_50,code=sm_50 \
        -gencode arch=compute_52,code=sm_52 \
        -gencode arch=compute_60,code=sm_60 \
        -gencode arch=compute_61,code=sm_61 \
        -gencode arch=compute_61,code=compute_61
修改为
CUDA_ARCH := -gencode arch=compute_30,code=sm_30 \
        -gencode arch=compute_35,code=sm_35 \
        -gencode arch=compute_50,code=sm_50 \
        -gencode arch=compute_52,code=sm_52 \
        -gencode arch=compute_60,code=sm_60 \
        -gencode arch=compute_61,code=sm_61 \
        -gencode arch=compute_61,code=compute_61
...

然后修改 caffe 目录下的 Makefile 文件:

sudo gedit Makefile
...
将:
NVCCFLAGS +=-ccbin=$(CXX) -Xcompiler-fPIC $(COMMON_FLAGS)
替换为:
NVCCFLAGS += -D_FORCE_INLINES -ccbin=$(CXX) -Xcompiler -fPIC $(COMMON_FLAGS)
...
 
...
将:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_hl hdf5
改为:
LIBRARIES += glog gflags protobuf boost_system boost_filesystem m hdf5_serial_hl hdf5_serial
...

然后修改 /usr/local/cuda/include/host_config.h 文件

#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!
改为
//#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!

但是我发现文件中并没有#error-- unsupported GNU version! gcc versions later than 4.9 are not supported!,然后就发现有个/usr/local/cuda/include/crt/host_config.h,然后gedit进去改了一个相似的。

开始编译

不要直接在caffe里make all -j8

使用官方的安装方式

mkdir build
cd build
cmake -DCUDNN_LIBRARY=/usr/local/cuda/lib64/libcudnn.so \
    -DPYTHON_LIBRARY=/usr/lib/python3.8/config-3.8-x86_64-linux-gnu/libpython3.8.so \
    -DPYTHON_INCLUDE_DIRS=/usr/include/python3.8 ..

make all -j8
make install
make runtest

2.1错误排除

如果编译失败 进入caffee文件夹

sudo make clean

2.1.1 nvcc fatal : Unsupported gpu architecture ‘compute_20’

解决办法:修改Makefile.config文件

# CUDA architecture setting: going with all of them.
# For CUDA < 6.0, comment the *_50 through *_61 lines for compatibility.
# For CUDA < 8.0, comment the *_60 and *_61 lines for compatibility.
# For CUDA >= 9.0, comment the *_20 and *_21 lines for compatibility.
CUDA_ARCH := -gencode arch=compute_20,code=sm_20 \
                -gencode arch=compute_20,code=sm_21 \
                -gencode arch=compute_30,code=sm_30 \
                -gencode arch=compute_35,code=sm_35 \
                -gencode arch=compute_50,code=sm_50 \
                -gencode arch=compute_52,code=sm_52 \
                -gencode arch=compute_60,code=sm_60 \
                -gencode arch=compute_61,code=sm_61 \
                -gencode arch=compute_61,code=compute_61

把下面这两行删除就可以了

-gencode arch=compute_20,code=sm_20 \
-gencode arch=compute_20,code=sm_21 \

2.1.2 fatal error: opencv2/core/core.hpp: 没有那个文件或目录

这个问题,可以查看include_dir
在这里插入图片描述
在这里插入图片描述

文件夹错位了在下一层
这里在下一层去复制过来就可以了

sudo cp -r /usr/local/include/opencv4/opencv2/  /usr/include/

2.1.3fatal error: glog/logging.h: No such file or directory compilation terminated.

方法1

sudo apt-get install libgoogle-glog-dev

方法2
出现这个错误是因为本机没有安装glog,安装方法:csdn查询对应ubuntu系统版本的安装方法
1、安装autoreconf

sudo apt install autoconf automake libtool

2下载glog源文件:

git clone https://github.com/google/glog.git

3根据https://github.com/google/glog底部的安装步骤安装glog:

./autogen.sh
./configure
make 
sudo make install

2.1.4fatal error: gflags/gflags.h:没有那个文件或目录

sudo apt-get install libgflags-dev

2.1.5fatal error: hdf5.h: 没有那个文件或目录

这次是ubuntu 16.04修改了hdf5头文件目录导致的,要在Makefile.config中把hdf5的一个目录添加进来:

# 找到这行:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include

# 替换为:
INCLUDE_DIRS := $(PYTHON_INCLUDE) /usr/local/include /usr/include/hdf5/serial

在这里插入图片描述

2.1.6 error: ‘CV_LOAD_IMAGE_COLOR’ was not declared in this scope

cd ..
sed -i 's/CV_LOAD_IMAGE_COLOR/cv::IMREAD_COLOR/g' src/caffe/layers/window_data_layer.cpp
sed -i 's/CV_LOAD_IMAGE_COLOR/cv::IMREAD_COLOR/g' src/caffe/util/io.cpp
sed -i 's/CV_LOAD_IMAGE_GRAYSCALE/cv::ImreadModes::IMREAD_GRAYSCALE/g' src/caffe/util/io.cpp

#下面部分忽略。。。上面三行就可以
sed -i 's/CV_LOAD_IMAGE_COLOR/cv::IMREAD_COLOR/g' src/caffe/test/test_io.cpp
sed -i 's/CV_LOAD_IMAGE_GRAYSCALE/cv::ImreadModes::IMREAD_GRAYSCALE/g' src/caffe/test/test_io.cpp

3、编译OpenPose

下载并解压代码:

wget -c https://github.com/CMU-Perceptual-Computing-Lab/openpose/archive/refs/tags/v1.7.0.zip  -O  openpose-1.7.0.zip
unzip openpose-1.7.0.zip

下载第三方包

cd openpose-1.7.0/3rdparty
git clone https://gitee.com/yao_yu/pybind11.git

创建构建目录

cd ../
mkdir openpose-1.7.0/build

启动cmake-ui

cmake-gui

在这里插入图片描述
这是最终效果
在这里插入图片描述

点击 Configure 在弹出的窗口中点Finish如果不报错再点击Generate

如果一切顺利 切换到openpose-1.7.0/build目录

cd openpose-1.7.0/build
make -j8

如果编译过程中出现过一个错误 cannot find #include “caffe/proto/caffe.pb.h”

# 在caffe根目录
protoc src/caffe/proto/caffe.proto --cpp_out=.
mkdir include/caffe/proto
mv src/caffe/proto/caffe.pb.h include/caffe/proto

然后在build目录下重新编译

不报错即编译成功

make clean
make -j8
sudo make install

报错

pybind11

在这里插入图片描述
这里需要下载pybind11
随便在码云找一个pybind11的包下载到3edparty文件夹中

roy@ngi:~/data/gitte/openpose_make/openpose-1.7.0/3rdparty$ git clone https://gitee.com/zzwmirrors/pybind11.git

Library was built without OpenGL support in function ‘cvNamedWindow’

解决方案

https://blog.csdn.net/weixin_40198941/article/details/97523485

4 测试

在根目录下

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

出现问题可以查看
在这里插入图片描述

https://www.freesion.com/article/2784790670/

也有可能电脑新能跟不上改为下面的检测点由25个变为15个

./build/examples/openpose/openpose.bin -model_pose MPI -net_resolution -1x368 --video examples/media/video.avi
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值