×î½ü½Óµ½Ò»¸öÈÎÎñ£¬ÒªÇóÊÇÉÏ´«Ò»ÄÐһٵÄÕÕÆ¬¸ù¾ÝËûÃǵÄÌØÕ÷Éú³É³öËûÃÇbabyµÄÏàÆ¬£¬ÎÒµÄÏë·¨ÊÇÊ×ÏÈÈËÁ³¶¨Î»£¬½Ø³öÈËÁ³µÄ±ê׼ͼƬ£¬È»ºóÔٽسöËûÃǸ÷¸öÎå¹ÙµÄͼƬ½øÐÐËõ·Å×îºóÔÙÆ´µþÔÚÓ¤¶ùͼƬµÄÁ³ÉÏ·´À¡¸øÓû§£¬µ±È»ÕâÖ»ÊÇÒ»¸öÏë·¨ Öмä»áÓкܶàÎÊÌâ ²»Ò»¶¨ÐеÄͨ£¬ÕâÑù×öÒ»¶¨ÒªÊ×ÏÈʵÏÖÈËÁ³¶¨Î»¡£
Ö±½ÓÓÃJAVAʵÏÖÈËÀàʶ±ð¶¨Î»µÄÀý×ÓÔÚÍøÉϺÜÄÑÕÒµ½£¬¶àÊÇÒÀ¿¿JNI µ÷ÓÃOpenCV±¾µØ·½·¨ÊµÏֵģ¬ÄÇôÕâÀïÏÈÀ´ËµËµÕâÖÖ·½·¨£¬
ÏÈÈÏʶһÏÂJNI ºÍOpenCV
JNIÊÇJava Native InterfaceµÄËõд£¬ÖÐÎÄΪJAVA±¾µØµ÷ÓᣴÓJava 1.1¿ªÊ¼£¬Java Native Interface (JNI)±ê×¼³ÉΪjavaƽ̨µÄÒ»²¿·Ö£¬ËüÔÊÐíJava´úÂëºÍÆäËûÓïÑÔдµÄ´úÂë½øÐн»»¥¡£
OpenCVÊÇIntel¹«Ë¾Ö§³ÖµÄ¿ªÔ´¼ÆËã»úÊÓ¾õ¿â¡£ËüÇáÁ¿¼¶¶øÇÒ¸ßЧ¡ª¡ªÓÉһϵÁÐ C º¯ÊýºÍÉÙÁ¿ C++ À๹³É£¬ÊµÏÖÁËͼÏñ´¦ÀíºÍ¼ÆËã»úÊÓ¾õ·½ÃæµÄºÜ¶àͨÓÃËã·¨¡£
Á˽âÁËÕâÁ½¸ö¶«Î÷ʹÓÃJAVA µ÷Óñ¾µØ·½·¨ÊµÏÖÈËÁ³Ê¶±ð¾ÍºÜ¼òµ¥ÁË ÏÈ¿´¿´Ð§¹û

ÕâÀï¿ÉÒÔ¿´µ½£¬±¾µØ·½·¨·µ»ØÁËÈËÁ³µÄλÖþØÐÎ97 57 92 92
´úÂëÒ²ºÜ¼òµ¥ Ö»Òªµ¼ÈëÏà¹ØXMLÎļþ ºÍ¿âÎļþ(haarcascade_frontalface_alt_tree.xml,JNI2OpenCV.dll µÈµÈ) ÒÔÏ´úÂë¾Í¿ÉÒÔʵÏÖ
class JNIOpenCV {
static {
System.loadLibrary("JNI2OpenCV");
}
public native int[] detectFace(int minFaceWidth, int minFaceHeight, String cascade, String filename);
}
public class FaceDetection {
private JNIOpenCV myJNIOpenCV;
private FaceDetection myFaceDetection;
public FaceDetection() {
myJNIOpenCV = new JNIOpenCV();
String filename = "5.jpg";
String cascade = "haarcascade_frontalface_alt_tree.xml";
int[] detectedFaces = myJNIOpenCV.detectFace(40, 40, cascade, filename);
int numFaces = detectedFaces.length / 4;
System.out.println("numFaces = " + numFaces);
for (int i = 0; i < numFaces; i++) {
System.out.println("Face " + i + ": " + detectedFaces[4 * i + 0] + " " + detectedFaces[4 * i + 1] + " " + detectedFaces[4 * i + 2] + " " + detectedFaces[4 * i + 3]);
}
}
public static void main(String args[]) {
FaceDetection myFaceDetection = new FaceDetection();
}
}