将数组<system:byte> ^转换为Mat </system:byte>

时间:2013-06-27 17:32:48

标签: opencv c++-cli mat

如何在openCV中将array<System:Byte>^转换为Mat。我在c ++ / cli中传递array<System:Byte>^,但我需要将其转换为Mat才能读取并显示它。

1 个答案:

答案 0 :(得分:3)

您可以使用构造函数Mat::Mat(int rows, int cols, int type, void* data, size_t step=AUTO_STEP)。转换可能如下所示。

void byteArray2Mat(array<System::Byte>^ byteArray, cv::Mat &output)
{
    pin_ptr<System::Byte> p = &byteArray[0];
    unsigned char* pby = p;
    char* pch = reinterpret_cast<char*>(pby);

    // assuming your input array has 2 dimensions.
    int rows = byteArray->GetLength(0);
    int cols = byteArray->GetLength(1);
    output = cv::Mat(rows, cols, CV_8UC1, (void*)pch)
}

我没有c ++ / CLI来测试程序,这可能不是最有效的方法。至少它应该让你知道如何开始。