Помогите пожалуйста составить алгоритм поиска изображения в изображении. Есть изображение (картинка) и есть образец другого изображения, который может присутствовать на исходном изображении. Каким образом можно найти этот образец на изображении? Придумал пока только такой вариант, что из образца возьму одну строчку шириной в 1 пиксель и буду попиксельно читать исходное изображение в поисках этой строчки. А как найти прямоугольник?
Для чего тебе такой алгоритм? Если для распознания капчи то тебе в сторону скелетизации изображения копать надо...
Можно попробовать представить секцию в Image в файле bmp в виде матрицы и искомое изображение тоже. Далее блоками сравнивать и сдвигать.
На PHP что-то подобное есть http://habrahabr.ru/blogs/php/55926/ А вообще нейросети конечно нужно, если что посложнее. Вот кусок на делфи, с какой-то проги, там по базе с фотками сравнивается картинка которую ты подсовываешь: Code: Procedure CompareBitmap(Const BitmapA, BitmapB: TBitmap; VAR Total, Sim, Diff: Integer); // Total:total des pixel, Sim:Pixels similaires, Diff:Pixels dirrfents Type TRGBTripleArray = ARRAY[WORD] OF TRGBTriple; pRGBTripleArray = ^TRGBTripleArray; Var i : INTEGER; j : INTEGER; RowA: pRGBTripleArray; RowB: pRGBTripleArray; begin Assert( (BitmapA.width = BitmapB.width) AND (BitmapA.height = BitmapB.height), 'Different sizes'); BitmapA.PixelFormat := pf24bit; BitmapB.PixelFormat := pf24bit; Total := BitmapA.width * BitmapA.height; SIM := 0; Diff := 0; For j := 0 to BitmapA.Height-1 do begin RowA := BitmapA.Scanline[j]; RowB := BitmapB.Scanline[j]; // pour i do 0 jusqu' la largeur de BitmapA alors For i := 0 to BitmapA.Width-1 DO begin If RowA[i] = RowB[i] Then inc(Sim) else inc(Diff) End End end;
it's temptetion you guys are really tempt me! -------------------------------------------------------------------------------------------- lace front wigs wedding dress synthetic wigs
Придумал такой алгоритм, берется первая строчка пикселов изображения, которое ищем, построчно в исходном изображении ищем ету строчку, как только нашли, вырезаем из исходного изображения прямоугольник с размерами искомого изображения и левым верхним углом начинающимся в начале найденной пиксельной строки, ну и затем сравниваем два етих прямоугольника.