Update 1Haut und Bild erfassen
Ich habe eine Idee, was inRange
Funktion tut. Aber ich möchte keine Maske anwenden und das neue Bild mit Hautfarbe zeigen. Was ich tun möchte, ist zu wissen, ob das Bild Hautfarbe enthält und einen größeren Bereich abdeckt.
Was will ich
ich ein Bild aufnehmen möchte, tun, wenn Finger in einer Grenze erkannt wird. Seine Dimensionen sind bekannt.
Struggling Punkte
- Manipulieren von Bilddaten in nativen Code.
- in Live-Kamera-Erkennung Haut, so, wenn dieser bestimmte Bereich fokussiert ist und die Haut erkannt wird, schnappen sollte
Was ich
I Layer bin mit JNI getan genommen werden, um die Operation durchzuführen . Ich bin in der Lage, Mat
von Bilddaten mit this tutorial zu bekommen, aber weiß nicht, wie man poutPixels
manipuliert. Das Format ist NV21
und ich bin nicht sicher, wie man Operationen darauf durchführt.
Ich muss Bild zuschneiden und dann feststellen, ob Haut in dem Bild vorhanden ist. Ich habe das Bild erfolgreich auf die gewünschte Größe zugeschnitten, aber ich habe keine Ahnung, wie ich mich vorwärts bewegen kann, um die Haut zu erkennen. Ich möchte, dass diese Methode true
oder false
zurückgibt. Hier
ist der Code:
jbyte * pNV21FrameData = env->GetByteArrayElements(NV21FrameData, 0);
jint * poutPixels = env->GetIntArrayElements(outPixels, 0);
Mat mNV(height, width, CV_8UC3, (unsigned char*)pNV21FrameData);
Mat finalImage(height, width, CV_8UC3, (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
Ich habe über inRange
Funktion gelesen, aber ich weiß nicht, wie zu überprüfen, ob die Haut dort ist oder nicht.
Fragen
- Bin ich auf dem richtigen Weg weiter zu gehen?
- Das Bildformat, das ich bekomme, ist
NV21
. Ist es ein8UC1
oder kann es8UC3
auch sein? - Wie gehe ich von hier aus vor, um die Haut zu erkennen?
Jede Hilfe wird geschätzt.
Es ist wirklich nett Geste nach dem Kommentar zu kommentieren, damit andere auch von deiner Weisheit lernen können. –