ROS机器人开发学习记录2——通过opencv读入本地图像并显示

使用opencv和ros实现彩色图的读入和显示

为了实现该功能,我使用了以下主要函数,先对这些函数的功能做简要记录:

(1)Mat obj = imread(“本地图像路径(实例:F:\\program\\Image\1.jpg)”),该函数中,Mat是一个变量类型,类似C语言中的int、char、float,旨在创建一个数值型数组,类似一个矩阵,将图像的灰度值或者RGB值存储到名为obj的数组中,imread载入路径中的目标图像并存储。

(2)imshow(“img”,obj),用于显示存在obj中的图像,显示名为img。

(3)imwrite("目标路径”,obj),该函数用于将obj中存储的图像存在目标路径中,在此例中没有用到,仅作记录。

在程序包文件夹下输入以下命令,创建cpp源文件

sudo gedit 程序名(此例中我起的程序名为getimage.cpp,注意一定要有cpp的后缀,否则只是创建了一个普通的文本文件)

保存程序后,需在程序包的CMakeLists.txt结尾加入

add_executable(getimage src/getimage.cpp)
target_link_libraries(getimage ${catkin_LIBRARIES} ${OpenCV_LIBS})

这样在编译功能包时才能找到源文件,然后就可以编译源文件啦

cd ~/catkin_ws
catkin_make //catkin为工作空间的命名

该程序代码如下所示,已做好重要注释

#include<ros/ros.h> //ros标准库头文件
#include<iostream> //C++标准输入输出库
//OpenCV2标准头文件
#include<opencv2/core/core.hpp>
#include<opencv2/highgui/highgui.hpp>
#include<opencv2/imgproc/imgproc.hpp>

using namespace cv;
//主函数
int main(int argc, char** argv)
{
    ros::init(argc, argv, "RGB");  //ros初始化
    Mat src=imread("/home/xiaohu/图片/manbuzhe.jpg",1);  //1表示读取的是彩色图像
    imshow("src",src);
    waitKey(0);
}

程序运行命令(在工作空间catkin文件夹下)

rosrun robot_vision getimage  //robot_vision为程序包

运行结果

ROS机器人开发学习记录2——通过opencv读入本地图像并显示_第1张图片

你可能感兴趣的:(《ROS机器人开发实践》,opencv)