Open Alpr не может загрузить свою зависимость

Сообщение об ошибке: не удалось загрузить файл или сборку 'openalpr-net, версия =2.3.0.0, культура = нейтральная, PublicKeyToken=null' или одна из ее зависимостей. Была предпринята попытка загрузить программу с неверным форматом.

Но когда я запускаю alpr.exe по строке комманда, у него нет проблем.

Вот мой код:

    private void CallAlpr()
    {
        var openFileDialog = new OpenFileDialog();

        if (openFileDialog.ShowDialog() == true)
        {
            OpenAlpr.Output(openFileDialog.FileName);
        }

        Console.Read();
    }

Класс OpenAlpr:

 using ......
 using openalprnet;
 using System.Drawing;

public static List<AlprPlateResultNet> RecognizePlate(string imagePath)
        {
            var alpr = new AlprNet("en", "/openalpr_64/openalpr.conf", "/openalpr_64/runtime_data");

            if (!alpr.IsLoaded())
            {
                throw new Exception("OpenAlpr failed to load!");
            }

            alpr.DefaultRegion = "md";

            var results = alpr.Recognize(imagePath);
            return results?.Plates;
        }

        public static void Output(string imagePath)
        {
            var plates = RecognizePlate(imagePath);
            var i = 0;
            foreach (var result in plates)
            {
                Console.WriteLine("Plate {0}:{1} result(s)", i++, result.TopNPlates.Count);
                Console.WriteLine("   Processing Time: {0} msec(s)", result.ProcessingTimeMs);

                foreach (var plate in result.TopNPlates)
                {
                    Console.WriteLine("   - {0}\t Confidence: {1}\tMatches Template: {2}", 
                        plate.Characters, plate.OverallConfidence, plate.MatchesTemplate);
                }
            }
        }

У меня есть папка: openalpr_64 в папке моего проекта.

2 ответа

Решение

Я решил эту проблему, скопировав все файлы и папки из zip-файла в папку Debug и убедившись, что.config и runtime_data указали правильный путь.

По своему опыту я видел только это конкретное сообщение при попытке использовать C# DLL / .EXE, которые не являются 32-битными или 64-битными.

Убедитесь, что для сборки вашего проекта не установлено значение "Любой ЦП" (по умолчанию это значение равно 64 битам на 64-битной ОС).

По крайней мере, проверьте 32/64 битность вашего.EXE и библиотеки.DLL.

Удачи!

Другие вопросы по тегам