本來想要用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作爲測試,可以成功的顯示圖片了。