通过ros订阅orbbec astra深度摄像头的话题,图像无法显示.

小楠jasen 2017-04-21 10:00:29
通过roslaunch打开astra摄像头后,写了订阅rgb节点的opencv程序去订阅/camera/rgb/image_raw,编译没问题,运行时imshow()窗口出现两秒钟就卡死黑屏,无法显示图像,如图


下面是订阅节点代码,求助该如何解决:
#include <ros/ros.h>
#include <image_transport/image_transport.h>
#include <opencv2/highgui/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <sensor_msgs/image_encodings.h>
#include <cv_bridge/cv_bridge.h>

using namespace std;
using namespace cv;

void imageCallback(const sensor_msgs::ImageConstPtr& msg)
{
cv_bridge::CvImagePtr cv_ptr;
try
{
cv_ptr = cv_bridge::toCvCopy(msg,sensor_msgs::image_encodings::BGR8);
}
catch (cv_bridge::Exception& e)
{
ROS_ERROR("Could not convert from '%s' to 'bgr8'.", msg->encoding.c_str());
}
Mat img_rgb = cv_ptr->image;
imshow("view",img_rgb);
}
int main(int argc, char **argv)
{
ros::init(argc, argv, "image_listener");
ros::NodeHandle nh;
image_transport::ImageTransport it(nh);
cv::namedWindow("view");
image_transport::Subscriber sub = it.subscribe("camera/rgb/image_raw", 1,imageCallback);
ros::spin();
return 0;
}
...全文
1593 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
msdddd 2020-09-17
  • 打赏
  • 举报
回复
在回调函数的末尾加个 waitKey(10); 用来显示图像
qq_17666915 2017-10-24
  • 打赏
  • 举报
回复
引用 1 楼 learner1212 的回复:
是orbbec astra摄像头的话,rgb图需要安装驱动,建议安装libuvc-camera,安装编译完后,会有image-raw这个节点,把这个节点的内容传输到/camera/rgb/image_raw中就可以显示了。你可以尝试下,我这么干了,成功了。
有具体代码吗?求回复
小楠jasen 2017-04-26
  • 打赏
  • 举报
回复
已经解决问题了,我把订阅话题换成了camera/rgb/image_rect_color就可以了.
learner1212 2017-04-25
  • 打赏
  • 举报
回复
是orbbec astra摄像头的话,rgb图需要安装驱动,建议安装libuvc-camera,安装编译完后,会有image-raw这个节点,把这个节点的内容传输到/camera/rgb/image_raw中就可以显示了。你可以尝试下,我这么干了,成功了。

18,777

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 专题技术讨论区
社区管理员
  • 专题技术讨论区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧