gpt4 book ai didi

c# - 如何在 C# 中将数组转换为 openCV Mat 对象?

转载 作者:行者123 更新时间:2023-12-02 17:58:10 27 4
gpt4 key购买 nike

上下文:
我们正在使用预训练模型进行机器学习项目,该模型由承包商使用 Python 代码库进一步训练。该机器学习过程有两种模型:一种用于识别,另一种用于分类,由于它们都使用 Keras-Retinanet 进行了预训练,因此每个模型对帧大小都有自己的特定要求。
这里的目标是获取灰度图像(存储为字节数组),应用调色板,然后调整其大小。训练模型的最初方法是使用 Python 的 OpenCV 库,其默认插值是 cv2.resize()。功能。因此,我们需要复制该行为以获得一致的结果(据我所知)。
到目前为止,我们完全无法将任何格式的数组加载到 Mat 中。对象,并且返回的错误被混淆了,因此非常不清楚问题是什么。
在这被标记为重复之前,我已经尝试过应用以下解决方案:
Convert RGB array to Mat (OpenCv)
https://reposhub.com/dotnet/graphics/SciSharp-SharpCV.html
目前我们正在尝试使用 OpenCVSharp4 库。据我所知,为了复制调整大小的行为,我们需要将数据存储在 Mat 中。对象,或者我们自己重建它们的插值,这似乎是更大的时间浪费。

        public static float[,] ConvertToBGR(byte[] grayscale, Color[] palette)
{
// initilize 3 layer array
float[,] bgrImage = new float[grayscale.Length, 3];

// loop through the grayscale image and get the color for each height value in the grayscale image
for (int i = 0; i < grayscale.Length; i++)
{
bgrImage[i, 0] = palette[grayscale[i]].B;
bgrImage[i, 1] = palette[grayscale[i]].G;
bgrImage[i, 2] = palette[grayscale[i]].R;
}

return bgrImage;
}


Mat matrix = new Mat(totalRows, totalColumns, MatType.CV_32FC3, ConvertToBGR(rawImageData, colorPallet));
这是将其加载到矩阵对象中的许多不同尝试之一的示例。我们还尝试了许多其他数组格式:
/*
float[,,]: [3colorLayers, height, width]
float[,]: [3colorLayers, greyscaleLength]
{
{B, G, R},
{B, G, R},
...
}
float[]: [3x greyscaleLength]
{B, G, R, B, G, R, B, G, R,...}

Even went so far as to just try applying the flat grayscale to a matrix which also failed (rawImageData is a byte[]):
Mat matrix = new Mat(totalRows, totalColumns, MatType.CV_8UC1, rawImageData);
*/
如何将数组转换为矩阵? 有没有办法使用 NumSharp?有更好的解决方案吗?

最佳答案

我没有将 OpenCvSharp4.runtime.win 包添加到项目中,因此实际上没有任何 native 行为可用。如果您正确包含这两个包,这整个事情就可以正常工作,这在 OpenCvSharp4“.NET 的 OpenCV 包装器”的描述中逐字逐句地说明。由于此包仅包含核心托管库,因此需要另一个用于您的操作系统的 native 绑定(bind)包( OpenCvSharp4.runtime.*)。”

关于c# - 如何在 C# 中将数组转换为 openCV Mat 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64246903/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com