عندما يتعلق الأمر باكتشاف المواجهة ، يجب أن نفهم أولاً مصنف ميزة HAAR. بصراحة ، فإن مصنف ميزة HAAR هو سلسلة من ملفات XML ، التي تصف القيم المميزة لأجزاء مختلفة من جسم الإنسان ، مثل الوجوه والعينين ، إلخ. يتم توفير ملفات الميزات التالية في OpenCV3.2.0:
haarcascade_eye.xml
haarcascade_eye_tree_eyeglasses.xml
haarcascade_frontalcatface.xml
haarcascade_frontalcatface_extended.xml
haarcascade_frontalface_alt.xml
haarcascade_frontalface_alt_tree.xml
haarcascade_frontalface_alt2.xml
haarcascade_frontalface_default.xml
haarcascade_fullbody.xml
haarcascade_lefteye_2splits.xml
haarcascade_licence_plate_rus_16stages.xml
haarcascade_lowerbody.xml
haarcascade_profileface.xml
haarcascade_righteye_2splits.xml
haarcascade_russian_plate_number.xml
haarcascade_smile.xml
haarcascade_upperbody.xml
عن طريق تحميل ملفات الميزات المختلفة ، يمكن تحقيق تأثير الكشف المقابل.
وصف لمعلمة دالة detectmultiscale في opencv3.2.0:
DetectMultiscale (صورة MAT ، كائنات matofrect ، double ScaleFactor ، int minneighbors ، int int ، حجم minsize ، حجم maxsize)
الصورة: الصورة المراد اكتشافها عمومًا (تحسين الكفاءة)
الكائنات: مجموعة ناقلات مربع مستطيلة من الكائنات المكتشفة
ScaleFactor: معامل مقياس نافذة البحث في فحوصات متتالية. الافتراضي هو 1.1 ، أي أن كل نافذة بحث تتوسع بنسبة 10 ٪ في التسلسل.
Minneighbors: الحد الأدنى لعدد المستطيلات المجاورة التي تشكل هدف الكشف (الافتراضي هو 3)
الأعلام: إما استخدام القيمة الافتراضية أو استخدم cv_haar_do_canny_pruning. إذا تم ضبطها على cv_haar_do_canny_pruning ، فستستخدم الوظيفة اكتشاف حافة Canny لاستبعاد المناطق التي تحتوي على الكثير من الحواف أو عدد قليل جدًا من الحواف ، لذلك لن تكون هذه المناطق عادةً هي المنطقة التي يوجد فيها الوجه
Minsize: الحد الأدنى للمدى للمنطقة المستهدفة التي تم الحصول عليها
MaxSize: الحد الأقصى للمدى للمنطقة المستهدفة التي تم الحصول عليها
رمز عينة الكشف عن الوجه:
استيراد org.opencv.core org.opencv.imgproc.imgproc ؛ import org.opencv.objdetect.cascadeclassifier ؛ فئة عامة facedetect {public static void main (string [] args) System.out.println ("/nrunning facedetector") ؛ cascadeclassifier facedetector = جديد cascadeclassifier () ؛ facedetector.load ("c: // ملفات البرنامج // opencv // sources // data // haarcascades // haarcascades // haarcascades_frontalface_alt.xml") ؛ MAT Image = imgcodecs.imread ("F: //1114.jpg") ؛ الوجهات matofrect = matofrect () جديدة ؛ FaceDetector.DetectMultiscale (الصورة ، الوجه) ؛ System.out.println (string.format ("الوجوه المكتشفة ٪ s" ، FaceDetections.Toarray (). الطول)) ؛ لـ (rect rect: facedetections.toarray ()) {imgproc.rectangle (صورة ، نقطة جديدة (rect.x ، rect.y) ، نقطة جديدة (rect.x + rect.width ، rect.y + rect.height) ، القياس الجديد (0 ، 255 ، 0) ؛ } string filename = "f: //ouput.jpg" ؛ imgcodecs.imwrite (اسم الملف ، الصورة) ؛ }} صورة المصدر ومخطط النتيجة:
ما سبق هو كل محتوى هذه المقالة. آمل أن يكون ذلك مفيدًا لتعلم الجميع وآمل أن يدعم الجميع wulin.com أكثر.