ROS各消息類型的data理解

1.sensor_msgs::Image

  • data按rgbrgb…的方式保存圖像
  • 將保存在txt中的data用opencv顯示
#include <fstream>
#include <opencv2/opencv.hpp>
#include <iostream>

using namespace std;

int data[3 * 640 * 480];

void array2mat(int *data, int width, int height)
{
  cv::Mat src = cv::Mat::zeros(height, width, CV_8UC3);
  for (int i = 0; i < height; ++i) 
  {
    for (int j = 0; j < width; j++)
    {
      src.at<cv::Vec3b>(i, j)[0] = data[(width * i + j)*3+2];
      src.at<cv::Vec3b>(i, j)[1] = data[(width * i + j)*3+1];
      src.at<cv::Vec3b>(i, j)[2] = data[(width * i + j)*3];
      //cout << (int)src.at<cv::Vec3b>(i, j)[0] << endl;
      //cout << (int)src.at<cv::Vec3b>(i, j)[1] << endl;
      //cout << (int)src.at<cv::Vec3b>(i, j)[2] << endl;
    }
  }
  cv::imshow("img", src);
  cv::waitKey(0);
}

int main()
{
  ifstream input("pic.txt");
  for (int i = 0; i < 640 * 480*3; ++i)
    input >> data[i];
  array2mat(data, 640, 480);
  input.close();
  return 0;
}

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章