2017-01-16 10 views
0

Сообщение об ошибке: Не удалось загрузить файл или сборку openalpr-net, Version = 2.3.0.0, Culture = neutral, PublicKeyToken = null или одну из его зависимостей. Была сделана попытка загрузить программу с неправильным форматом.Open Alpr не может загрузить свою зависимость

Но когда я запускаю 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 под моей папке проекта.

ответ

0

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

1

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

Убедитесь, что ваша сборка проекта не установлена ​​в «Любой процессор» (который по умолчанию будет 64 бит на 64-битной ОС).

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

Удачи вам!

+0

Спасибо Монце, я понял это: – Franva

+1

Приятно слышать! Повеселись. Будьте готовы внести много изменений в часть файла ini C++ - по умолчанию это может привести к неограниченному использованию памяти;) – Monza

+0

Я не использую C++, никаких файлов ini, найденных в распакованной папке. Но спасибо за напоминание :) – Franva