首页 > 解决方案 > 使用 Keras.NET 进行数组整形

问题描述

我无法将重塑表达式从 R 转换为 C#。

这是R代码:

load_image <- function(file, ...) {
  magick::image_read(file, ...) %>%
    magick::image_data('rgba') %>%
    as.numeric()
}

img <- load_image("./my_image.png")
print(cat("Image length: ", length(img)))
print(cat("Image dim: ", dim(img)))

data <- array(dim = c(1, dim(img)))
data[1,,,] <- img

print(cat("Data length: ", length(data)))
print(cat("Data dim: ", dim(data)))

这是打印表达式的输出:

Image length: 36000
Image dim: 50 180 4

Data length: 36000
Data dim: 1 50 180 4

在我的 C# 代码中,我有这个:

var imgBytes = File.ReadAllBytes("./my_image.png");

using (var pngImage = new MagickImage(imgBytes)) {
    var img = np.array<ushort>(pngImage.GetPixels().ToArray());
    
    Console.WriteLine("Image length: {0}", img.len);
    Console.WriteLine("Image dim: {0}", string.join(" ", img.shape.dimensions));

    var data = img.reshape(1);

    //model.Predict(data);
}

哪个产生这个:

Image length: 36000
Image dim: 36000

如何在 R 中以相同的方式在 C# 中加载和重塑图像?

标签: pythonr.net-core

解决方案


推荐阅读