Я хочу написать программу на C# с emgu CV, чтобы сравнивать сотни фотографий и находить между ними разницу. Я знаю, что это сложно объяснить, но я хочу написать алгоритм, который сможет определить, что не так на картинке, у него есть изображение с ошибкой, и им нужно найти их все. Я не хочу использовать глубокое обучение только с emgu CV. Я пробую это с двумя картинками, но не знаю, как отметить на отмеченном_изображении1, только думаю, чего не хватает в img1 и есть на img2, а чего нет на img1, но отсутствует на img2, покажи это на отмеченном_изображении2
Извините за глупый вопрос, но иногда не знаю, как объяснить, чего я хочу
Я хочу написать программу на C# с emgu CV, чтобы сравнивать сотни фотографий и находить между ними разницу. Я знаю, что это сложно объяснить, но я хочу написать алгоритм, который сможет определить, что не так на картинке, у него есть изображение с ошибкой, и им нужно найти их все. Я не хочу использовать глубокое обучение только с emgu CV. Я пробую это с двумя картинками, но не знаю, как отметить на отмеченном_изображении1, только думаю, чего не хватает в img1 и есть на img2, а чего нет на img1, но отсутствует на img2, покажи это на отмеченном_изображении2 Извините за глупый вопрос, но иногда не знаю, как объяснить, чего я хочу [code]using Emgu.CV; using Emgu.CV.Structure; using Emgu.CV.CvEnum; using System.Drawing; using Emgu.CV.Util;
static void CompareImages() {
Image img1 = new Image("test1/1.jpg"); Image img2 = new Image("test1/2.jpg");
Image thresholdImg1 = diff1.ThresholdBinary(new Gray(40), new Gray(255)); Image thresholdImg2 = diff2.ThresholdBinary(new Gray(40), new Gray(255));
VectorOfVectorOfPoint contours1 = new VectorOfVectorOfPoint(); Mat hierarchy1 = new Mat(); CvInvoke.FindContours(thresholdImg1, contours1, hierarchy1, RetrType.External, ChainApproxMethod.ChainApproxSimple);
VectorOfVectorOfPoint contours2 = new VectorOfVectorOfPoint(); Mat hierarchy2 = new Mat(); CvInvoke.FindContours(thresholdImg2, contours2, hierarchy2, RetrType.External, ChainApproxMethod.ChainApproxSimple);
for (int i = 0; i < contours1.Size; i++) { CircleF circle = CvInvoke.MinEnclosingCircle(contours1[i]); CvInvoke.Circle(img1, new Point((int)circle.Center.X, (int)circle.Center.Y), 5, new MCvScalar(0, 0, 255), 2); }
for (int i = 0; i < contours2.Size; i++) {
CircleF circle = CvInvoke.MinEnclosingCircle(contours2[i]); CvInvoke.Circle(img2, new Point((int)circle.Center.X, (int)circle.Center.Y), 5, new MCvScalar(0, 0, 255), 2); }