Эмгу найти изображение в образе б
Я новичок в Эмгу и хотел бы получить совет о том, с чего начать.
Я просмотрел определение формы, но он слишком сложен для того, что мне нужно... я думаю... и мой пример не работает. Я получаю эту ошибку:
Не удается получить пример SURF в EMGU.CV для работы?
В любом случае, это то, что я хотел бы сделать: Найти изображение A на изображении B. Изображение A - это простой квадрат, который всегда имеет одну и ту же серую 1-пиксельную границу и всегда одинаковый размер (я считаю), но внутренний цвет может быть черным или один из приблизительно 7 других цветов (только когда-либо однотонный). мне нужно найти координаты изображения A на изображении b, когда я нажимаю кнопку. см. ниже изображения.
Изображение Б
А также
Изображение А
2 ответа
Goosebumps
ответ правильный, но я подумал, что немного кода может быть полезным. Это мой код, использующий MatchTemplate
обнаружить шаблон (изображение A) внутри исходного изображения (изображение B). Как Goosebumps
отметил, что вы, вероятно, хотите включить немного серого вокруг шаблона.
Image<Bgr, byte> source = new Image<Bgr, byte>(filepathB); // Image B
Image<Bgr, byte> template = new Image<Bgr, byte>(filepathA); // Image A
Image<Bgr, byte> imageToShow = source.Copy();
using (Image<Gray, float> result = source.MatchTemplate(template, Emgu.CV.CvEnum.TM_TYPE.CV_TM_CCOEFF_NORMED))
{
double[] minValues, maxValues;
Point[] minLocations, maxLocations;
result.MinMax(out minValues, out maxValues, out minLocations, out maxLocations);
// You can try different values of the threshold. I guess somewhere between 0.75 and 0.95 would be good.
if (maxValues[0] > 0.9)
{
// This is a match. Do something with it, for example draw a rectangle around it.
Rectangle match = new Rectangle(maxLocations[0], template.Size);
imageToShow.Draw(match, new Bgr(Color.Red), 3);
}
}
// Show imageToShow in an ImageBox (here assumed to be called imageBox1)
imageBox1.Image = imageToShow;
Вы можете взглянуть на http://docs.opencv.org/doc/tutorials/imgproc/histograms/template_matching/template_matching.html Это, вероятно, то, что вы ищете. Ваш Черный квадрат был бы шаблоном. Вы можете попытаться добавить немного серого вокруг него. Это предотвратит срабатывание детектора на больших черных участках.