Распознавание игральных карт c#

Буду благодарен за любой ответ

Для распознавание я использую Accord.Imaging

Я подумал, что лучше всего это сделать на картах (игральных) и пытаюсь распознать их. У меня есть колода из 52 карт + 1 карта из этой колоды которую мне нужно распознать.
У меня есть картинки всех 52 карт в полном размере Файлы с картами

.+ 1 карта которую нужно распознать (это урезанная карта примерно на 40%)

Уменьшенная карта кусок ее

Далее я перебором ищу похожу карту данным методом. Проблема в том, что он находит карту в колоде похожую с оригиналом , но и карты похожие например 6черви он определяет как и 8черви и тд. Манипуляция с if (matchings[0].Similarity > 0.91f) в бОльшу сторону или меньшую не дает нормального эффекта

Если ли какой-то метод или другая библиотека которая бы мне помогла более точно распознавать.

Возможно мне стоит распознавать не картинку ,а находить цифру или буку и карту масти?
Буду благодарен за любой ответ

            string path = @"C:\Users\Pictures\cards";
            var images = GetImagesPath(path);
            string flop = @"C:\1\flop";
            var hand = GetImagesPath(flop);
            Bitmap templateImage;

            Grayscale gg;
            
            ExhaustiveTemplateMatching tm;
            for (int i = 0; i < hand.Count; i++)
            {
                gg = new GrayscaleBT709();
                templateImage = new Bitmap(hand[i]);
                Bitmap grayTemplate = gg.Apply(templateImage);

                tm = new ExhaustiveTemplateMatching(0);
                // find all matchings with specified above similarity

                for (int z = 0; z < images.Count; z++)
                {
                    Bitmap sourceImage = new Bitmap(images[z]);
                    Bitmap graySource = gg.Apply(sourceImage);


                    TemplateMatch[] matchings = tm.ProcessImage(graySource, grayTemplate);

                    Graphics g = Graphics.FromImage(sourceImage);
                    if (matchings[0].Similarity > 0.91f)
                    {
                        int X = matchings[0].Rectangle.X;
                        int Y = matchings[0].Rectangle.Y;

                        g.DrawRectangle(new Pen(Color.Red, 3), X, Y, matchings[0].Rectangle.Width, matchings[0].Rectangle.Height);
                        PicTemplate.Image = sourceImage;
                        MessageBox.Show("Match found...");
                        
                    }
                    else
                    {
                      
                    }


                }
           


            }

Ответы (0 шт):