簡體   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