【问题标题】:is there a way to crop a given 3d image using coordinates in java?有没有办法使用java中的坐标裁剪给定的3d图像?
【发布时间】:2021-11-22 14:24:56
【问题描述】:

我的功能是:public static int[][][] crop(int[][][] img, int i_1, int j_1, int i_2, int j_2) 因为像素是 (i_1,j_1),(i_2,j_2) 并且函数应该返回一个从 (i_1,j_1) 裁剪到 (i_2,j_2) 的新 3d 数组,并且新图像的大小应该是 ) (i_2- i_1+1)*(j_2-j_1+1)?

【问题讨论】:

  • 请澄清您的具体问题或提供更多详细信息以准确突出您的需求。正如目前所写的那样,很难准确地说出你在问什么。
  • 我有一张照片,我想通过从 (i_1,j_1) 到 (i_2,j_2) 的两个给定像素坐标进行裁剪,图像的新尺寸应该是 (i_2-i_1+ 1)*(j_2-j_1+1)

标签: java arrays cropimage.net


【解决方案1】:

我想这就是你要找的东西:

    public static int[][][] crop(int[][][] img, int i_1, int j_1, int i_2, int j_2) {
    int[][][] newImage = new int[3][i_2 - i_1 + 1][j_2 - j_1 + 1];

    for(int k = 0; k < 3; k++) {
        for(int i = 0; i < (i_2 - i_1 + 1); i++) {
            for(int j = 0; j < (j_2 - j_1 + 1); j++) {
                newImage[k][i][j] = img[k][i][j];
            }
        }
    }

    return newImage;
}

第一行代码采用并返回一个三维数组(可能是RGB颜色格式的图片)作为其第一个参数。其他参数是裁剪矩阵的坐标。

在代码块中,为变量newImage声明了原始图片的浅拷贝,以便稍后返回原始图片的裁剪部分。

代码块的主要部分是嵌套循环:

  1. k 在 RGB 数组上运行,这是第一个索引为 0,1,2 的数组;
  2. i 在检查的数组行的坐标上运行(因此这是您的垂直索引);
  3. j 在检查的数组行的列坐标上运行(因此这是您的水平索引)。

嵌套循环内的语句将原始图片像素(位于坐标范围内)附加到返回的名为 newImage 的裁剪数组。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
  • 如果你能解释一下我会很高兴@mabadai
猜你喜欢
  • 1970-01-01
  • 2013-05-16
  • 2015-01-11
  • 2019-07-19
  • 2016-12-09
  • 2020-08-28
  • 1970-01-01
  • 2021-09-01
相关资源
最近更新 更多