如何在openCV中将array<System:Byte>^
转换为Mat
。我在c ++ / cli中传递array<System:Byte>^
,但我需要将其转换为Mat
才能读取并显示它。
答案 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来测试程序,这可能不是最有效的方法。至少它应该让你知道如何开始。