[問題] JNI做影像一維陣列掃描
各位大大好, 小弟最近在研究android手機、想把我原本C的
影像處理演算法放在JNI C的部份做處理。
我的影像是存成一維陣列的型式 ex: mat[240*320]這種樣子
但是我在做前後張相減的時後app 開一下下就會瞬間跳掉
因為我的程式需要記住前後張畫面的值(x,y座標)、
所以我有些需要記值的變數從上層(JNI C)宣告成static
然後pass by value給到我的演算法(自己寫的void function)來處理
在我逐步debug後發現在兩個陣列做比較時就會導致App跳出...
後來我用個cnt來計數看值正不正常,沒想到值居然怪怪的
部份程式碼如下:
void functiontest(int width, int height, unsigned char* dst1,
unsigned char* dst2){
int i,j;
unsigned char * matNEW = dst1;
unsigned char * matOLD = dst2;
int cnt =0;
for(i=0;i<height;i++)
for(j=0;j<width;j++){
if (matNEW[i*width+j] >= matOLD[i*width+j])
cnt = cnt +1;
}
}
其中height以及width都是從Java透過JNI傳過來的camera preview size大小
我用logcat看過、都一直是320*240
照理來說cnt應該會一直正常的數到76800然後歸0重複,但我再用logcat看過後
有時後cnt的值會亂跳 ex:從4209 忽然跳到4546...
這樣我的i跟j值跟本不對、我在猜這可能是導致我app跳掉的原因
不知道有沒有大大了解這方面的問題?
還是說JNI不可以用這樣的方式來做影像掃描?
我有看過網路openCV的一些範例、感覺上也跟我寫的大同小異
範例:
int j, yp, i, y;
for (j = 0, yp = 0; j < height; ++j) {
for (i = 0; i < width; ++i, ++yp) {
y = (0xff & ((int) yuv420sp[yp])) - 16;
}
}
不太清楚到底是什麼原因....有大大可以幫忙分析嗎@@...感謝
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 163.18.102.91
※ 編輯: rayallen3001 來自: 163.18.102.91 (02/03 15:23)
→
02/04 15:20, , 1F
02/04 15:20, 1F
→
02/04 15:21, , 2F
02/04 15:21, 2F
→
02/25 13:38, , 3F
02/25 13:38, 3F