本来想要用https://github.com/ildoonet/ros-openpose这个ros包去跑openpose的,但是编译出现很多问题:比如’log’is not a member of ''op之类的
查了一下是因为openpose版本更新导致接口变化,这个就很麻烦了,看来只能自己搞了。
先讲不使用ros环境的CmakeList的配置:
cmake_minimum_required(VERSION 3.5.1)
project(easyopenpose)
set(CMAKE_CXX_STANDARD 14)
set(INC_DIR /usr/include
/usr/local/cuda/include #cuda的include位置 修改为正确的地方
/home/wxw/openpose/3rdparty/caffe/include #机器中正确的caffe位置
/home/wxw/openpose/3rdparty/caffe/src #机器中正确的caffe位置
)
set(LINK_DIR /usr/lib
/usr/lib/x86_64-linux-gnu/
/usr/local/cuda/lib64 #cuda的lib位置 修改为正确的地方
/home/wxw/openpose/3rdparty/caffe/build/lib #caffe的lib位置 修改为正确的地方
)
set(OpenCV_DIR /home/wxw/opencv-3.4.2) #opencv的位置
find_package(OpenCV REQUIRED)
#link_directories("home/wxw/opencv-3.4.2/build/lib")
find_package(OpenPose REQUIRED)
include_directories(${INC_DIR}${OpenCV_INCLUDE_DIRS}${OpenPose_INCLUDE_DIRS}${EIGEN3_INCLUDE_DIR})
link_directories(${LINK_DIR}${OpenCV_LIBS}${OpenPose_LIBS})
add_executable(easyopenpose 06_face_from_image.cpp)
target_link_libraries(easyopenpose
caffe
boost_system
glog
jsoncpp
${OpenPose_LIBS}
${OpenCV_LIBS}
)
这里我们采用了openpose文件样例中自带的06_face_from_image.cpp进行了测试。
还要记得把model文件夹拷到这个文件夹下(这里我也没找到什么好方法)。目录结构如下:
##这里是ROS环境下的CMakeList和package.xml的配置
#CMakeList.txt
cmake_minimum_required(VERSION 2.8.3)
project(openpose_ros)
set(CMAKE_CXX_STANDARD 14)
set(INC_DIR /usr/include
/usr/local/cuda/include #cuda的include位置 修改为正确的地方
/home/wxw/openpose/3rdparty/caffe/include #机器中正确的caffe位置
/home/wxw/openpose/3rdparty/caffe/src #机器中正确的caffe位置
)
set(LINK_DIR /usr/lib
/usr/lib/x86_64-linux-gnu/
/usr/local/cuda/lib64 #cuda的lib位置 修改为正确的地方
/home/wxw/openpose/3rdparty/caffe/build/lib #caffe的lib位置 修改为正确的地方
)
set(OpenCV_DIR /home/wxw/opencv-3.4.2) #opencv的位置
find_package(OpenCV REQUIRED)
#link_directories("home/wxw/opencv-3.4.2/build/lib")
find_package(OpenPose REQUIRED)
find_package(catkin REQUIRED COMPONENTS
roscpp
rospy
cv_bridge
sensor_msgs
image_transport
sensor_msgs
)
catkin_package(
CATKIN_DEPENDS
std_msgs roscpp
)
include_directories(${INC_DIR}${OpenCV_INCLUDE_DIRS}${OpenPose_INCLUDE_DIRS}${EIGEN3_INCLUDE_DIR})
include_directories(
include ${catkin_INCLUDE_DIRS}
include
${catkin_INCLUDE_DIRS}
)
link_directories(${LINK_DIR}${OpenCV_LIBS}${OpenPose_LIBS})
add_executable(face_detect 06_face_from_image.cpp)
target_link_libraries(face_detect
caffe
boost_system
glog
jsoncpp
${OpenPose_LIBS}
${OpenCV_LIBS}
${catkin_LIBRARIES}
)
package.xml正常写
<?xml version="1.0"?>
<package>
<name>openpose_ros</name>
<version>0.0.1</version>
<description>ROS Message Package for Openpose</description>
<maintainer email="[email protected]">wxw</maintainer>
<license>BSD</license>
<buildtool_depend>catkin</buildtool_depend>
<build_depend>roscpp</build_depend>
<build_depend>rospy</build_depend>
<build_depend>std_msgs</build_depend>
<build_depend>cv_bridge</build_depend>
<build_depend>image_transport</build_depend>
<run_depend>std_msgs</run_depend>
<run_depend>roscpp</run_depend>
<run_depend>image_transport</run_depend>
</package>
仍然是用06_face_from_image.cpp作为测试,可以成功的显示图片了。