繁体   English   中英

Uchar的矢量到cv :: Mat

[英]Vector of Uchar to cv::Mat

我有一张要放入uchar向量的图像,该图像是使用open mpi从处理器发送到处理器的,但是我需要将uchar向量放入cv::Mat

是否有捷径可寻?

cv::Mat image_on_proc = newpopulation(cv::Rect(0, start, population.cols, rows_in_section));
    std::vector<byte> img = matToBytes(image_on_proc);

    std::vector<uchar> test;
    for(int i=0; i<image_on_proc.rows; i++)
    {
      for(int j=0; j<image_on_proc.cols; j++)
      {
    test.push_back(image_on_proc.at<uchar>(i,j));
      }
    }

    MPI_Barrier(MPI_COMM_WORLD);

    MPI_Send(&test[0],test.size()*sizeof(uchar), MPI_BYTE, 0, 99, MPI_COMM_WORLD);

上面显示了如何将图像放入向量中并发送,有一个相应的recv可以工作,但是我不知道如何将其转换回图像。

您可以使用以下方法将Mat存储到vector<uchar>中:

Mat img = ...; // img must be CV_8UC1 in this example
vector<uchar> v(img.begin<uchar>(), img.end<uchar>());

然后使用以下命令返回到Mat中:

Mat img2(img.rows, img.cols, img.type(), v.data());

请注意,这里您不是在复制值,而只是为v的数据创建Mat头,因此img2将反映对v所做的任何更改。 如果v超出范围,则img2无效。 您可以简单地使用clone()复制数据,例如:

Mat img3 = Mat(img.rows, img.cols, img.type(), v.data()).clone();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM