การจับคู่แม่แบบเป็นเทคนิคในการค้นหาส่วนที่ตรงกันมากที่สุด (คล้ายกัน) ของภาพหนึ่งไปยังอีกภาพหนึ่ง
ฟังก์ชั่น: imgproc.matchtemplate (ภาพ MAT, MAT TEMPL, ผลลัพธ์ MAT, วิธีการ int)
คำอธิบายพารามิเตอร์:
รูปภาพ: ภาพต้นทาง
Templ: ภาพเทมเพลต
ผลลัพธ์: เปรียบเทียบผลลัพธ์
วิธีการ: อัลกอริทึมการจับคู่
อัลกอริทึมการจับคู่:
TM_SQDIFF วิธีการจับคู่ความแตกต่างกำลังสอง: วิธีนี้ใช้ความแตกต่างกำลังสองเพื่อจับคู่; ค่าการจับคู่ที่ดีที่สุดคือ 0; ยิ่งการแข่งขันแย่เท่าใดค่าการจับคู่ก็ยิ่งใหญ่ขึ้นเท่านั้น
วิธีการจับคู่สหสัมพันธ์ TM_CCORR: วิธีนี้ใช้การคูณการทำงาน; ค่าที่ใหญ่ขึ้นเท่าไหร่ระดับการจับคู่ก็จะยิ่งดีขึ้นเท่านั้น
วิธีการจับคู่ค่าสัมประสิทธิ์สหสัมพันธ์ TM_CCOEFF วิธีการ: 1 แสดงถึงการจับคู่ที่สมบูรณ์แบบ; -1 หมายถึงการจับคู่ที่เลวร้ายที่สุด
TM_SQDIFF_NORMED วิธีการจับคู่ความแตกต่างของสี่เหลี่ยมจัตุรัสปกติ
TM_CCORR_NORMED วิธีการจับคู่สหสัมพันธ์ปกติ
TM_CCOEFF_NORMED วิธีการจับคู่ค่าสัมประสิทธิ์สหสัมพันธ์ปกติ
รหัสตัวอย่าง:
โมฆะคงที่สาธารณะหลัก (String [] args) {// todo วิธีการที่สร้างอัตโนมัติระบบ Stub System.LoadLibrary (core.native_library_name); mat g_tem = imgcodecs.imread ("f: //mould.jpg"); mat g_src = imgcodecs.imread ("f: //source.jpg"); int result_rows = g_src.rows () - g_tem.rows () + 1; int result_cols = g_src.cols () - g_tem.cols () + 1; mat g_result = mat ใหม่ (result_rows, result_cols, cvtype.cv_32fc1); imgproc.matchtemplate (g_src, g_tem, g_result, imgproc.tm_ccorr_normed); // วิธีการจับคู่ความแปรปรวนของสแควร์แบบปกติ // imgproc.matchTemplate (G_SRC, G_TEM, G_RESULT, // IMGPROC.TM_CCOEFF_NORMED); // วิธีการจับคู่ค่าสัมประสิทธิ์สหสัมพันธ์ปกติ // imgproc.matchtemplate (g_src, g_tem, g_result, imgproc.tm_ccoeff); // // // // // วิธีการจับคู่สัมประสิทธิ์สหสัมพันธ์: 1 หมายถึงการจับคู่ที่สมบูรณ์แบบ; -1 หมายถึงการจับคู่ที่เลวร้ายที่สุด // imgproc.matchtemplate (g_src, g_tem, g_result, imgproc.tm_ccorr); // // วิธีการจับคู่ที่เกี่ยวข้อง // imgproc.matchtemplate (g_src, g_tem, g_result, imgproc.tm_sqdiff); // // วิธีการจับคู่ความแปรปรวนของสแควร์: วิธีนี้ใช้ความแปรปรวนแบบสแควร์เพื่อจับคู่; ค่าการจับคู่ที่ดีที่สุดคือ 0; ยิ่งการแข่งขันแย่เท่าใดค่าการจับคู่ก็ยิ่งใหญ่ขึ้นเท่านั้น // imgproc.matchtemplate (g_src, g_tem, g_result, imgproc.tm_ccorr_normed); // // วิธีการจับคู่สหสัมพันธ์ปกติ core.normalize (g_result, g_result, 0, 1, core.norm_minmax, -1, MAT ใหม่ ()); point matchlocation = new point (); minmaxlocresult mmmlr = core.minmaxloc (g_result); MatchLocation = MMMLR.MAXLOC; // ว่าจะใช้ maxloc ที่นี่ขึ้นอยู่กับอัลกอริทึมการจับคู่ที่ใช้ imgproc.rectangle (g_src, matchlocation, จุดใหม่ (matchlocation.x + g_tem.cols (), matchlocation.y + g_tem.rows ()), สการ์ใหม่ (0, 0, 0, 0); imgcodecs.imwrite ("f: //match.jpg", g_src); - ภาพต้นทาง:
ภาพเทมเพลต:
ผลการจับคู่:
ข้างต้นเป็นเนื้อหาทั้งหมดของบทความนี้ ฉันหวังว่ามันจะเป็นประโยชน์ต่อการเรียนรู้ของทุกคนและฉันหวังว่าทุกคนจะสนับสนุน wulin.com มากขึ้น