我是ROS的新手,需要转换一个预先存在的视频文件或大量可以连接成一个视频流的图像,该视频流保存在ROS上的.bag文件中.我在网上找到了这个代码:http://answers.ros.org/question/11537/creating-a-bag-file-out-of-a-image-sequence/,但它说这是用于摄像机校准,所以不是确定它是否符合我的目的.
对ROS有深入了解的人可以确认我可以使用为我的目的提供的链接中的代码,或者如果有人真正拥有我正在寻找的代码,你能在这里发布吗?
谢谢!
我试图通过Cmake将Opencv包含在我的原生C代码中.我在网上做了一些研究并从网上下载了FindOpenCV.cmake文件并将其添加到我的android项目的app目录中.这也是CMakeLists.txt所在的位置.我使用本教程将OpenCV作为模块导入到我的Android Studio项目中:https://www.learn2crack.com/2016/03/setup-opencv-sdk-android-studio.html,当我运行时:
if(!OpenCVLoader.initDebug()){
System.out.println("Opencv not loaded");
} else {
System.out.println("Opencv loaded");
}
Run Code Online (Sandbox Code Playgroud)
我知道Opencv已经加载了.
但是,因为我正在尝试将OpenCV添加到我的本机代码而不是Java代码中,所以我认为我不能使用它.这是我现在拥有的CMakeLists:
# Sets the minimum version of CMake required to build your native library.
# This ensures that a certain set of CMake features is available to
# your build.
cmake_minimum_required(VERSION 3.4.1)
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} FindOpenCV.cmake)
# Specifies a library name, specifies whether the library is STATIC or
# SHARED, and provides relative paths to the source code. You can
# define multiple libraries …Run Code Online (Sandbox Code Playgroud) 我正在尝试创建发布包含两个图像的自定义消息。这是自定义消息文件:
\nHeader header\nsensor_msgs/Image leftimage\nsensor_msgs/Image rightimage\nRun Code Online (Sandbox Code Playgroud)\n这是我尝试使用自定义消息通过 ROS 发布立体相机图像的文件:
\nsensor_msgs::ImagePtr leftmsg;\nsensor_msgs::ImagePtr rightmsg;\nleftmsg = cv_bridge::CvImage(std_msgs::Header(), "mono8", leftframe).toImageMsg();\nrightmsg = cv_bridge::CvImage(std_msgs::Header(), "mono8", rightframe).toImageMsg();\nstereo.leftimage = leftmsg;\nstereo.rightimage = rightmsg;\nstereo_pub.publish(stereo);\nRun Code Online (Sandbox Code Playgroud)\n但是,当我执行以下操作时,出现以下编译错误catkin_make:
error: no match for \xe2\x80\x98operator=\xe2\x80\x99 (operand types are \xe2\x80\x98duo_cam::Stereo_<std::allocator<void> >::_leftimage_type {aka sensor_msgs::Image_<std::allocator<void> >}\xe2\x80\x99 and \xe2\x80\x98sensor_msgs::ImagePtr {aka boost::shared_ptr<sensor_msgs::Image_<std::allocator<void> > >}\xe2\x80\x99)\n stereo.leftimage = leftmsg;\n ^\n note: candidate is:\n In file included from /opt/ros/indigo/include/image_transport/publisher.h:39:0,\n from /opt/ros/indigo/include/image_transport/image_transport.h:38,\n sensor_msgs::Image_<std::allocator<void> >& sensor_msgs::Image_<std::allocator<void> >::operator=(const sensor_msgs::Image_<std::allocator<void> >&)\n struct Image_\n ^\nRun Code Online (Sandbox Code Playgroud)\n我该如何纠正这个问题?我已经在使用 toImageMsg() 函数,我在网上看到该函数将 ImagePtr 转换为图像,所以不确定出了什么问题。
\n我正在尝试使用该功能:
bool pcl::visualization::PCLVisualizer::addPointCloud(const pcl::PointCloud<pcl::PointXYZ >::ConstPtr & cloud,
const std::string & id = "cloud",
int viewport = 0
)
Run Code Online (Sandbox Code Playgroud)
所以我有以下代码作为全局变量:
pcl::PointCloud<pcl::PointXYZ> linaccpc;
const pcl::PointCloud<pcl::PointXYZ> * linptr = &linaccpc;
boost::shared_ptr<pcl::visualization::PCLVisualizer> linplotter (new pcl::visualization::PCLVisualizer("linear acceleration");
Run Code Online (Sandbox Code Playgroud)
然后在我的主要功能中:
linplotter->addPointCloud<pcl::PointXYZ> (linptr, "linear acc", 0);
Run Code Online (Sandbox Code Playgroud)
我收到错误:
error: no matching function for call to 'pcl::visualization::PCLVisualizer::addPointCloud(const pcl::PointCloud<pcl::PointXYZ>*&, const char [11], int)'
linplotter->addPointCloud<pcl::PointXYZ> (linptr, "linear acc", 0);
^
Run Code Online (Sandbox Code Playgroud)
任何帮助深表感谢。