Существуют ли какие-либо библиотеки распознавания изображений для .NET?
-
02-07-2019 - |
Вопрос
Я хочу иметь возможность сравнивать изображение, снятое с веб-камеры, с изображением, хранящимся на моем компьютере.
Библиотека не обязана быть стопроцентно точной, поскольку она не будет использоваться ни в чем критически важном (например,полицейское расследование), мне просто нужно что-то, с чем можно будет работать.
Я попробовал демонстрационный проект для Распознавание изображений из CodeProject, и он работает только с маленькими изображениями/не работает вообще, когда я сравниваю одно и то же изображение размером 120x90 пикселей (это не классифицируется как ОК :P).
Были ли успехи в распознавании изображений раньше?
Если да, не могли бы вы предоставить ссылку на библиотеку, которую я мог бы использовать в C# или VB.NET?
Решение
Вы можете попробовать это: http://code.google.com/p/aforge/
Он включает в себя сравнительный анализ, который даст вам оценку.Также имеется множество других замечательных функций обработки изображений всех типов.
// The class also can be used to get similarity level between two image of the same size, which can be useful to get information about how different/similar are images:
// Create template matching algorithm's instance
// Use zero similarity to make sure algorithm will provide anything
ExhaustiveTemplateMatching tm = new ExhaustiveTemplateMatching(0);
// Compare two images
TemplateMatch[] matchings = tm.ProcessImage( image1, image2 );
// Check similarity level
if (matchings[0].Similarity > 0.95)
{
// Do something with quite similar images
}
Другие советы
Вы можете точно использовать ЭмгуКВ для .NET.
Я сделал это просто.Просто скачайте библиотеку EyeOpen. здесь.Затем используйте его в своем классе C# и напишите следующее:
use eyeopen.imaging.processing
Писать
ComparableImage cc;
ComparableImage pc;
int sim;
void compare(object sender, EventArgs e){
pc = new ComparableImage(new FileInfo(files));
cc = new ComparableImage(new FileInfo(file));
pc.CalculateSimilarity(cc);
sim = pc.CalculateSimilarity(cc);
int sim2 = sim*100
Messagebox.show(sim2 + "% similar");
}