2017-01-16 8 views
0

エラーメッセージ: ファイルまたはアセンブリ 'openalpr-net、Version = 2.3.0.0、Culture = neutral、PublicKeyToken = null'またはその依存関係の1つを読み込めませんでした。不正な形式のプログラムをロードしようとしました。Open Alprは依存関係を読み込めません。

しかし、私がalpr.exeをコマンドラインで実行すると、問題はありません。私のプロジェクトフォルダの下openalpr_64:私はフォルダを持っている

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); 
       } 
      } 
     } 

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

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

     Console.Read(); 
    } 

OpenAlprクラス:

は、ここに私のコードです。

答えて

0

zipファイルのすべてのファイルとフォルダをDebugフォルダにコピーして、.configとruntime_dataが正しいパスを指していることを確認してこの問題を解決しました。

1

私の経験では、32ビットまたは64ビットのすべてではないC#DLL/.EXEを使用しようとすると、その特定のメッセージしか見ていませんでした。

プロジェクトビルドが「すべてのCPU」に設定されていないことを確認します(64ビットOSでは64ビットにデフォルト設定されます)。

少なくとも、.EXEとライブラリ.DLLの32/64ビット精度を調べます。

幸運を祈る!

+0

ありがとうモンツァ、私はそれを考え出しました:) – Franva

+1

お聞きしました!楽しむ。 ) – Monza

+0

私はC++を使用していないので、解凍されたフォルダの下にはiniファイルはありません。しかし、思い出させるために感謝:) – Franva

関連する問題