0

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

4

1 回答 1

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 来测试程序,这可能不是最有效的方法。至少它应该让你知道如何开始。

于 2013-06-27T19:28:37.853 回答