文章目录

  • 1、编译opencv 和 opencv_contrib
    • 1.1安装最新版本opencv4.5.3(跳过)-caffee版本不匹配
    • 1.2安装opencv3.4.3
  • 2、编译caffe
    • 2.1错误排除
      • 2.1.1 nvcc fatal : Unsupported gpu architecture 'compute_20'
      • 2.1.2 fatal error: opencv2/core/core.hpp: 没有那个文件或目录
      • 2.1.3fatal error: glog/logging.h: No such file or directory compilation terminated.
      • 2.1.4fatal error: gflags/gflags.h:没有那个文件或目录
      • 2.1.5fatal error: hdf5.h: 没有那个文件或目录
      • 2.1.6 error: ‘CV_LOAD_IMAGE_COLOR’ was not declared in this scope
  • 3、编译OpenPose
    • 报错
      • pybind11
      • Library was built without OpenGL support in function 'cvNamedWindow'
  • 4 测试

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 caffe1protoc src/caffe/proto/caffe.proto --cpp_out=.mkdir include/caffe/protomv 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

ubuntu18.04编译Open Pose 1.7相关推荐

  1. Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南

    Ubuntu18.04 编译Android 10源码 并烧录源码到pixel3的避坑指南 实验环境 下载Android源码树 在pixel3上安装手机驱动版本 编译Android源码 Android ...

  2. Ubuntu18.04 编译报错 `No package ‘orocos-bfl‘ found` 的解决方法

    写在前面 笔者运行环境Ubuntu18.04,ROS-melodic. 在运行 robot_pose_ekf ,出现了 bfl 的报错. 一.报错提示 No package 'orocos-bfl' ...

  3. OpenCV环境配置:Ubuntu18.04编译OpenCV4.2.0和contrib模块记录

    OpenCV环境配置:Ubuntu18.04编译OpenCV4.2.0和contrib模块记录 1.下载源码和安装依赖包 2.解压源码文件和配置路径 3.配置Cmake并编译OpenCV 4.导入Op ...

  4. android 源码编译core dumped,Ubuntu18.04 编译Android 8.1 源码出现的问题及解决笔记

    Ubuntu18.04 编译Android 8.1 源码出现的问题及解决笔记 经过不断的尝试并经过一晚上的编译终于在ubuntu18.04的虚拟机内编译成功Android 8.1,下面我列举以下在编译 ...

  5. Ubuntu18.04 编译安装 Realtek 8852 无线网卡驱动

    记录一下Ubuntu18.04 编译安装 Realtek 8852 无线网卡驱动全过程 内核版本: Linux 5.6.19-050619-generic 先是一步一步按照这个做的,到make的时候发 ...

  6. Ubuntu18.04 编译 ncnn

    官方文档(https://github.com/Tencent/ncnn/wiki/how-to-build#build-for-linux-x86)上说的是: install g++ cmake p ...

  7. Ubuntu18.04编译Android源码openssl版本过高

    报错:*FAILED:/bin/bash -c "(rm -rf out/target/product/FJDEV061/signed )报错原因:Ubuntu18.04的openssl1. ...

  8. Ubuntu18.04编译c语言程序

    在Ubuntu18.04系统下编译C程序的一般流程,vim文本编辑器的使用,makefile的使用等 一.vim教程 1. 功能 2. 模式 3. 基本操作 二.在Ubuntu系统下使用gcc编译c程 ...

  9. ubuntu18.04编译4.15内核过程

    内核下载地址:Linux kernel 1.将下载好的内核源码压缩包置于ubuntu18.04虚拟机中(在windows上解压会导致部分文件损坏) 2.解压下载的压缩包,在/usr/src中 tar ...

  10. ubuntu安装vasp_科学网—Ubuntu18.04编译VASP.5.4.1两种方法的详细过程 - 木留华的博文...

    笔者根据自己的经验总结了VASP在Ubuntu系统的安装方法,分享给大家并方便自己查看. 下面两种编译方法(gfortran及MKL分别编译VASP)均需要VASP源码包及其补丁,这些可以在官网或通过 ...

最新文章

  1. python中最常用的映射类型_什么是python中唯一的映射类型
  2. C++words search单词搜索的算法实现(附完整源码)
  3. 用户登陆_「python学习笔记」用户登陆需求实现(for/if/str知识点)
  4. Loadruner压数据库oracle,LoadRunner连接Oracle数据库(转)
  5. php基础知识 书写格式
  6. Jmeter中的几个重要测试指标释义
  7. string字符串的查找替换、模式匹配
  8. DB2数据库常用命令
  9. C语言读取易语言的字节集,易语言字节集参数传递详解
  10. 中控考勤机忘记密码处理
  11. 用Aria2来替换迅雷
  12. 20年前的网文:我彷徨在唯物主义和唯心主义之间
  13. 洛谷P2668 斗地主
  14. python test suite什么意思_在python中创建testsuite
  15. 关于Ultraiso无法写入硬盘映像的相关解决办法
  16. 基于腾讯云的多人视频会议的在线语音转写功能的实现
  17. SEO优化:6个方法提升网站排名
  18. C++ QT开发人机象棋(鼠标点击)
  19. L3-011 直捣黄龙
  20. 『JavaSE』多态

热门文章

  1. tomcat下载安装及配置【图文教程】
  2. 工业上的数控机床所属计算机应用的什么领域,工业上的数控机床所属的计算机应用领域是______。...
  3. windowskb2685811补丁_Win7/8.1 KB2685811、KB2685813和KB2670838蓝屏补丁下载汇总 (32位+64位)...
  4. 电脑版微信发消息转圈圈
  5. 视频教程-AJAX+JSON完成实时验证码检测+输入补齐-Java
  6. 文件上传下载--DiskFileUpload
  7. 南大通用极速内存数据库
  8. 韦东山嵌入式学习心得
  9. 中职生计算机应用试卷分析,中职计算机应用基础学业水平测试问题的相关分析...
  10. Manjaro 安装 wiznote[解决:安装完成输入wiznote没有该命令]