我有2张图片,每张图片都是完整图片的一部分,2张合并后可以创建完整的图片。
然而,在2张图像上有重叠,我正在尝试创建一个程序,该程序将找到image2的顶行与图像1中的任何一行像素相遇的位置。 我创建了一个for循环来收集数组中每个图像的每一行像素。
这是我的代码:
int row = 0;
for (int i = 0; i < imageArray1.length; i++) {
for (int j = 0; j < imageArray1[i].length; j++) {
if (imageArray1[i][j] == (imageArray2[0][0])) {
row = imageArray1[i][j];
}
}
}
问题是我很确定我只收集了第二张图片左上角的单个像素,而不是整行。 任何想法如何解决这个问题? java新手
答案 0 :(得分:0)
您需要修复imageArray2[0][0]
,以便始终只与imageArray2
的第一个索引进行比较。您需要与imageArray2
一起迭代imageArray1
以进行完整比较。为此,我建议您为imageArray2
使用嵌套for循环。
答案 1 :(得分:0)
您需要针对image2中的每一行交叉检查image1中的每一行。因此, 3级循环: 1)循环遍历image1中的行 2)循环遍历image2中的行 3)< / strong>遍历image1和image2中当前行中的列以确定它们是否重叠
int overlappingRowInImage1 = 0;
int overlappingRowInImage2 = 0;
int[][] imageArray1 = null;
int[][] imageArray2 = null;
// loop through the rows in the first image
for (int row1 = 0; row1 < imageArray1.length; row1++) {
boolean foundIdenticalRow = false;
// loop through the rows in the second image
for (int row2 = 0; row2 < imageArray2.length; row2++) {
foundIdenticalRow = true;
// two rows are identical if each column in both rows are the same
for (int col = 0; col < imageArray1[row1].length; col++) {
if (imageArray1[row1][col] != (imageArray2[row2][col])) {
foundIdenticalRow = false;
break;
}
}
if (foundIdenticalRow) {
overlappingRowInImage1 = row1;
overlappingRowInImage2 = row2;
break;
}
}
if (foundIdenticalRow) {
System.out.println("Row " + overlappingRowInImage1 + " in image 1 is overlapping with Row " +
overlappingRowInImage2 + " in image 2");
break;
}
}