ROS OpenCV讀取攝像頭並發布話題

2021-09-11 07:24:56 字數 1388 閱讀 7565

#include 

#include

#include

#include

#include

int main

(int argc, char** ar**)

//image_transport負責訂閱和發布

image_transport:

:imagetransport it

(nh)

; image_transport:

:publisher pub_image = it.

advertise

("camera",1

);cv:

:mat image;

//mat為opencv裡定義的影象類

while

(ros::ok

())//將影象從cv::mat型別轉化成sensor_msgs/image型別並發布

pub_image.

publish

(cv_bridge:

:cvimage

(std_msgs:

:header()

,"bgr8"

, image)

.toimagemsg()

);//將影象從sensor_msgs/image型別轉化成cv::mat型別

/* cv_bridge可以有選擇的對顏色和深度資訊進行轉化。為了使用指定的特徵編碼,就有下面集中的編碼形式:

mono8: cv_8uc1, 灰度影象

mono16: cv_16uc1,16位灰度影象

bgr8: cv_8uc3,帶有顏色資訊並且顏色的順序是bgr順序

rgb8: cv_8uc3,帶有顏色資訊並且顏色的順序是rgb順序

bgra8: cv_8uc4, bgr的彩色影象,並且帶alpha通道

rgba8: cv_8uc4,cv,rgb彩色影象,並且帶alpha通道

*/cv:

:imshow

("camera"

, image)

; cv:

:waitkey(3

);// opencv重新整理影象 3ms

ros:

:spin()

;}}

在cmakelists.txt中新增

find_package(opencv required)
add_executable(cameraproc

src/cameraproc.cpp

)target_link_libraries(cameraproc

$ $

)

其中cameraproc為cpp檔名

讀取攝像頭

從攝像頭獲取影象資料 cap cv2.videocapture 0 while true ret 讀取成功true或失敗false frame讀取到的影象的內容 讀取一幀資料 ret,frame cap.read 變為灰度圖 gray cv2.cvtcolor frame,cv2.color bgr...

C 借助OpenCvSharp讀取攝像頭並顯示

1,首先要安裝opencvsharp,使用cv2的函式獲取裝置,並將影象轉換到bitmap using opencvsharp using opencvsharp.extensions void run cap 2,在呼叫時開啟執行緒,可以在主函式內呼叫,也可在按鈕內呼叫 private void ...

OPENCV讀取攝像頭

opencv highgui cvcreatecameracapture 或cvcapturefromcam windows 中都是由較為低效的 vfw機制實現的,不適合在最終產品中使用。在 windows 中使用directshow opencv 中文網的 yushiqi 提供了乙個基於 dire...