ROSではopenCVでカメラを表示し、画像データを公開します.
9245 ワード
ROSではopenCVでカメラを表示し、画像データを公開します.クライテリア C++を使って を実現する. CMakeLists.txt構成 pythonを使って を実現します. ROSは、openCVを使用して画像を受信し、 を表示する.ゲスト!役に立つと思ったら、賛成してください. 前言
自分もローズとopenCVを勉強し始めたばかりです.たくさんの穴を踏みます.例えば今回はrosの中でopenCVを使って、たくさんのブログによって書いたのです.最後はフリーズか、それとも黒い枠です.これに対して、先辈を教えてもらって、やっと调通しました.
C++を使って実現します
CMakeLists.txt配置
追加(最後の二つのイマジゲンは実行可能ファイルを生成する名前で、自分で設定します):
次号に続く
ROSはopenCVを使って画像を受信し、表示する.
本人のブログを参照してください.購読部分
ゲスト!役に立つと思ったら、賛成してください.
コメントの討論を歓迎して、不足と提案を指摘します!
自分もローズとopenCVを勉強し始めたばかりです.たくさんの穴を踏みます.例えば今回はrosの中でopenCVを使って、たくさんのブログによって書いたのです.最後はフリーズか、それとも黒い枠です.これに対して、先辈を教えてもらって、やっと调通しました.
C++を使って実現します
#include
#include
#include // ROS sensor_msgs/Image cv::Mat
#include // ROS
#include //
#include
#include
#include
#include
int main(int argc, char** argv)
{
ros::init(argc, argv, "imageGet_node"); // ros , imageGet_node
ros::NodeHandle nh; // ros
image_transport::ImageTransport it(nh); // ROS
image_transport::Publisher image_pub = it.advertise("/cameraImage", 1); // /cameraImage
ros::Rate loop_rate(200); // ,Hz
cv::Mat imageRaw; //
cv::VideoCapture capture(0); // , 0( 0,2....)
if(capture.isOpened() == 0) //
{
std::cout << "Read camera failed!" << std::endl;
return -1;
}
while(nh.ok())
{
capture.read(imageRaw); // imageRaw
cv::imshow("veiwer", imageRaw); //
sensor_msgs::ImagePtr msg = cv_bridge::CvImage(std_msgs::Header(), "bgr8", imageRaw).toImageMsg(); //
image_pub.publish(msg); //
ros::spinOnce(); // ,
loop_rate.sleep(); //
if(cv::waitKey(2) >= 0) // ms, ( waitKey, )
break;
}
}
WaitKey()は必ず持っていなければならないです.0ではなく、他の多くのブログはこの点がないので、間違えてしまいます.CMakeLists.txt配置
追加(最後の二つのイマジゲンは実行可能ファイルを生成する名前で、自分で設定します):
find_package(OpenCV REQUIRED)
include_directories(${OpenCV_INCLUDE_DIRS})
add_executable(image_Get src/image_Get.cpp)
target_link_libraries(image_Get ${catkin_LIBRARIES} ${OpenCV_LIBS})
pythonを使って実現します次号に続く
ROSはopenCVを使って画像を受信し、表示する.
本人のブログを参照してください.購読部分
ゲスト!役に立つと思ったら、賛成してください.
コメントの討論を歓迎して、不足と提案を指摘します!