我正在爲Android創建一個運動檢測應用程序。雖然我有我的檢測算法的問題:比較不斷重新填充的2d陣列
public boolean compareBitmaps()
{
/*I'm creating 2 x 2D arrays which will continually be repopulated
every 2 frames with the pixel data of that frame based on even or odd
(frames are collected in an ArrayList 'BIT')
BIT(0) will be stored in compare1
BIT(1) will be stored in compare2
BIT(2) will be stored in compare1 and so on...*/
int [][] compare1 = new int[width][height];
int [][] compare2 = new int[width][height];
int bmpCount = BIT.size();
boolean noMotion = true;
//This is where I determine wheter even or odd using the modulus %
for (int x=0; x<bmpCount; x++)
if(x%2!=0)
{
System.out.println("Odd");
getPixels1(compare1, x);
}
else
{
System.out.println("Even");
getPixels2(compare2, x);
}
//Here I'm looking to continually compare the returned pixel colours
// of the 2D arrays
if(!Arrays.deepEquals(compare1, compare2))
{
System.out.println("No Motion");
return noMotion = false;
}
else
{
return noMotion = true;
}
}
private void getPixels1(int[][] compare1, int x)
{
for(int i = 0; i<width; i++)
{
for(int j=0; j<height; j++)
{
compare1[j][i] = BIT.get(x).getPixel(j, i);
}
}
}
private void getPixels2(int[][] compare2, int x)
{
for(int i = 0; i<width; i++)
{
for(int j=0; j<height; j++)
{
compare2[j][i] = BIT.get(x).getPixel(j, i);
}
}
}
我使用println()
幫我調試, - 目前控制檯打印出「奇」這(糾正我,如果我錯了)是錯誤的元素(0)?當我下一步完成應用程序休息時。
有人能看到我在做什麼錯了,任何幫助,將不勝感激
非常感謝,
當你在實現運動檢測型應用程序,並比較每個偶數和奇數幀,從我的小知識,我認爲這是太快,會消耗大量的CPU功率的,我的建議是框架在低速率一些比較像15幀之後的東西。 –
對不起,15幀後你比較什麼?就像比較第0幀和第14幀以及第15幀和第29幀一樣? – Ledgey1101
只是一個友好的提醒。我注意到你沒有接受任何問題的答案。你知道你可以接受答案來證明它解決了你的問題嗎?只需點擊投票箭頭旁邊的複選框即可。這讓社區知道你正在積極參與你的問題。 –