【问题标题】:Multiply element in multidimensional array将多维数组中的元素相乘
【发布时间】:2021-12-10 19:09:26
【问题描述】:

->请帮忙实现一个函数

基本上我想操作图像

想象图像可以以像素为单位分开 -> 图像的每个像素将是(举个简单的例子)“一个数字”

        int[,] originalImage = new int[,]
        {
            { 1,2,3 },
            { 4,5,6 }
        };

我需要将图像的大小加倍 x2(或 x3、x4 等) 两倍大小的像素“1”将被复制到右边的位置,向下和角落

            int[,] expectedResult = new int[,]
        {
            { 1,1,2,2,3,3 },
            { 1,1,2,2,3,3 },
            { 4,4,5,5,6,6 },
            { 4,4,5,5,6,6 }
        };

该功能如何实现?

Multiply(int[,] originalImage, int multiply)

【问题讨论】:

标签: c# arrays algorithm function image-processing


【解决方案1】:

请注意,有大量的库可以在数学或图像处理中执行此操作。但是,纯粹出于学术目的

给定

private static int[,] DoStuff(int[,] array,int size)
{
   var sizeX = array.GetLength(0);
   var sizeY = array.GetLength(1);

   var newArray = new int[sizeX * size, sizeY * size];

   for (var i = 0; i < newArray.GetLength(0); i++)
   for (var j = 0; j < newArray.GetLength(1); j++)
      newArray[i, j] = array[i / size, j / size];

   return newArray;
}

用法

int[,] originalImage = 
{
   { 1, 2, 3 },
   { 4, 5, 6 }
};

var newArray = DoStuff(originalImage,3);

for (var i = 0; i < newArray.GetLength(0); i++)
{
   for (var j = 0; j < newArray.GetLength(1); j++)
      Console.Write(newArray[i, j] + " ");
   Console.WriteLine();
}

输出

1 1 1 2 2 2 3 3 3
1 1 1 2 2 2 3 3 3
1 1 1 2 2 2 3 3 3
4 4 4 5 5 5 6 6 6
4 4 4 5 5 5 6 6 6
4 4 4 5 5 5 6 6 6

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-08-31
    • 2012-05-06
    • 2019-02-28
    • 2019-09-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多