基於ROS使用OpenCV進行人臉識別

2021-08-31 19:01:06 字數 2937 閱讀 3727

攝像頭:1個;

usb資料線:1個;

這裡需要使用usb-cam軟體包:

$ cd ~/catkin_ws/src  

$ git clone

$ cd ~/catkin_ws

$ catkin_make

注意:下面的程式執行前,需要啟動usb_cam節點。

roslaunch usb_cam usb_cam-test.launch

執行上面的節點,這時該節點會不斷的發布/usb_cam/image_raw話題。如下圖所示:

下面的程式將使用這個話題資料。

#include #include #include #include #include #include #include #include using namespace std;

using namespace cv;

cascadeclassifier face_cascade;

static const std::string opencv_window = "raw image window";

class face_detector

~face_detector()

void imagecb(const sensor_msgs::imageconstptr& msg)

catch (cv_bridge::exception& e)

// draw an example circle on the video stream

if (cv_ptr->image.rows > 400 && cv_ptr->image.cols > 600)

} void detect_faces(cv::mat img)

point org = point(40,40);

if (faces.size() >= 1)

imshow(opencv_window,img);

waitkey(3);

} static scalar randomcolor( rng& rng )

};int main(int argc, char** argv)

" "");

parser.about( "\nthis program demonstrates using the cv::cascadeclassifier class to detect objects (face + eyes) in a video stream.\n"

"you can use haar or lbp features.\n\n" );

parser.printmessage();

string face_cascade_name = parser.get("face_cascade");

//-- 1. load the cascades

if( !face_cascade.load( face_cascade_name ) )

;ros::init(argc, argv, "face_detector");

face_detector ic;

ros::spin();

return 0;

}

程式不再解釋,基本都很簡單,基於ros平台呼叫opencv程式如果多寫幾次,似乎可以找到乙個固定的模板。

cmake_minimum_required(version 2.8.3)

project(cv_bridge_tutorial_pkg)

find_package(catkin required components

cv_bridge

image_transport

roscpp

sensor_msgs

std_msgs

)find_package( opencv required )

catkin_package()

include_directories(

$ $

)add_executable(sample_cv_bridge_node src/sample_cv_bridge_node.cpp)

target_link_libraries(sample_cv_bridge_node$$

)include_directories($ $)

2.3 package.xml檔案

不懂得也可以參考《ros學習筆記6(package.xml》

<?xml version="1.0"?>

cv_bridge_tutorial_pkg

0.0.0

the cv_bridge_tutorial_pkg package

lentin

todo

catkin

cv_bridge

image_transport

roscpp

sensor_msgs

std_msgs

cv_bridge

image_transport

roscpp

sensor_msgs

std_msgs

首先執行:roscore

然後:roslaunch usb_cam usb_cam-test.launch

最後:rosrun cv_bridge_tutorial_pkg sample_cv_bridge_node

結果如圖所示:下圖帥哥為我舍友(沒辦法,他的**較帥,單身可撩)!

ROS下入門程式設計C (使用OpenCV)

2018年12月5日 北平 ros版本 ros kinetic kame 2016 ros與ubuntu版本的更新是保持同步的 記錄下詳細的流程 1.建立工作區catkin ws src mkdir p catkin ws src 2.進入目錄 cd catkin ws src 3.建立乙個名為te...

基於ROS使用Arduino控制蜂鳴器

arduino控制板 1個 蜂鳴器 1個 杜邦線 若干 接線方式為 蜂鳴器的乙個引腳接arduino的數字輸出引腳,蜂鳴器的另外的乙個引腳接地 來張實際的 略麻煩 首先 roscore 其次 rosrun rosserial python serial node.py dev ttyacm0 dev...

在ROS中使用UDP進行通訊

原鏈結 ros的網路通訊提供了兩種方式,一種是tcp協議,一種是udp協議。預設採用tcp進行通訊。但是在實際的wifi網路使用中發現使用者經常反饋客戶端和機械人連線中斷且無法重新建立連線。在ros wiki中官方也有說明,rostcp更適合有線網連線的網路,而rosudp更適合wifi等網路不可靠...