Я пытаюсь сделать шаблон, соответствующий в основном на java. Я использовал простой алгоритм для поиска соответствия. Вот код:
minSAD = VALUE_MAX;
// loop through the search image
for ( int x = 0; x <= S_rows - T_rows; x++ ) {
for ( int y = 0; y <= S_cols - T_cols; y++ ) {
SAD = 0.0;
// loop through the template image
for ( int i = 0; i < T_rows; i++ )
for ( int j = 0; j < T_cols; j++ ) {
pixel p_SearchIMG = S[x+i][y+j];
pixel p_TemplateIMG = T[i][j];
SAD += abs( p_SearchIMG.Grey - p_TemplateIMG.Grey );
}
}
// save the best found position
if ( minSAD > SAD ) {
minSAD = SAD;
// give me VALUE_MAX
position.bestRow = x;
position.bestCol = y;
position.bestSAD = SAD;
}
}
Но это очень медленный подход. Я протестировал 2 изображения (768 × 1280) и субимаг (384 x 640). Это длится веками. Совместим ли openCV с шаблоном намного быстрее или нет с готовой функцией cvMatchTemplate()?