android开发皮肤检测,android – 检测皮肤和捕获图像
更新1
我知道inRange函數(shù)的作用.但我不想應(yīng)用蒙版并用膚色顯示新圖像.我想要做的是知道圖像是否包含膚色并覆蓋更大的區(qū)域.
我想做的事
我想在邊界內(nèi)檢測(cè)到手指時(shí)拍攝照片.它的尺寸是已知的.
苦苦掙扎
>在本機(jī)代碼中處理圖像數(shù)據(jù).
>在實(shí)時(shí)相機(jī)中檢測(cè)皮膚,因此無論何時(shí)聚焦特定區(qū)域并檢測(cè)到皮膚,都應(yīng)拍攝快照
我做了什么
我正在使用JNI Layer來執(zhí)行操作.我可以使用this tutorial從圖像數(shù)據(jù)中獲取Mat,但不知道如何操作poutPixels.格式是NV21,我不知道如何對(duì)它進(jìn)行操作.
我需要裁剪圖像然后檢測(cè)圖像中是否存在皮膚.我已經(jīng)成功地將圖像裁剪到所需的尺寸,但沒有任何線索可以向前移動(dòng)以檢測(cè)皮膚.我希望這個(gè)方法返回true或false.
這是代碼:
jbyte * pNV21FrameData = env->GetByteArrayElements(NV21FrameData,0);
jint * poutPixels = env->GetIntArrayElements(outPixels,0);
Mat mNV(height,width,CV_8UC3,(unsigned char*)pNV21FrameData);
Mat finalImage(height,(unsigned char*) poutPixels);
jfloat wScale = (float) width/screenWidth;
jfloat hScale = (float) height/screenHeight;
float temp = rectX * wScale;
int x = (int) temp;
temp = rectY * hScale;
int y = (int) temp;
int cW = (int) (width * wScale);
int cH = (int) (height * hScale);
cH = cH/2;
Rect regionToCrop(x,y,cW,cH);
mNV = mNV(regionToCrop);
finalImage = finalImage(regionToCrop);
//detect skin and return true or false
我已經(jīng)閱讀了關(guān)于inRange的功能,但我不知道如何檢查是否有皮膚.
問題
>我是否在正確的道路上繼續(xù)前進(jìn)?
>我得到的圖像格式是NV21.它是8UC1還是8UC3?
>如何從這里開始檢測(cè)皮膚?
任何幫助表示贊賞.
總結(jié)
以上是生活随笔為你收集整理的android开发皮肤检测,android – 检测皮肤和捕获图像的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: tpg色卡查询_PANTONE潘通TPG
- 下一篇: HP 电脑、打印机 - 查找序列号