#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...