В настоящее время я пытаюсь использовать функцию сопоставления шаблонов OpenCV для обнаружения всех похожих объектов в данном изображении с использованием шаблона. Тем не менее, я не получаю все объекты (которые являются клетками крови), которые будут обнаружены, хотя они в значительной степени похожи и идентичны. Я искал в Интернете решение, но не получил.Шаблон соответствия OpenCV Подобный объект
Ниже мой код:
cv::Mat ref = cv::imread("c:\\image.jpg");
cv::Mat tpl = cv::imread("c:\\template.jpg");
cv::Mat gref, gtpl;
cv::cvtColor(ref, gref, CV_BGR2GRAY);
cv::cvtColor(tpl, gtpl, CV_BGR2GRAY);
cv::Mat res(ref.rows-tpl.rows+1, ref.cols-tpl.cols+1, CV_32FC1);
cv::matchTemplate(gref, gtpl, res, CV_TM_CCOEFF_NORMED);
cv::threshold(res, res, 0.8, 1., CV_THRESH_TOZERO);
while (true)
{
double minval, maxval, threshold = 0.8;
cv::Point minloc, maxloc;
cv::minMaxLoc(res, &minval, &maxval, &minloc, &maxloc);
if (maxval >= threshold)
{
cv::rectangle(
ref,
maxloc,
cv::Point(maxloc.x + tpl.cols, maxloc.y + tpl.rows),
CV_RGB(0,255,0), 2
);
cv::floodFill(res, maxloc, cv::Scalar(0), 0, cv::Scalar(.1), cv::Scalar(1.));
}
else
break;
}
cv::imshow("reference", ref);
Это результат и изображение, используемое:
Учитывая Изображение
Шаблон
Результат с более высокой настройки порогового значения (0,8/0,8)
Результат с более низкими параметрами пороговых (0,6/0,3)
Я довольно новыми для согласования шаблона является существует ли способ обнаружения всех объектов в изображении?
Мне нужен шаблон для обнаружения ячеек в еще более сложном изображении.
Изменить пороговое значение? – nbsrujan
Я попытался понизить порог, но все еще не обнаружил все объекты – Woody
Можете ли вы загрузить изображение res image – nbsrujan