EmguCV 64ビットビルドランタイムエラー

私は、W7/x64 OS上で.net 4.0とVS2010を使用して、既存の32ビットEmguCV(バージョン2.3 )を64ビットに構築する問題に取り組んでいます。もし私が商用ライセンスを購入したのであれば、領収書に記載されているリンクからダウンロードしてください。

エラーは

System.TypeInitializationException was unhandled
 Message=The type initializer for 'Emgu.CV.CvInvoke' threw an exception.
 Source=Emgu.CV
 TypeName=Emgu.CV.CvInvoke

私は、この記事の指示に従っています。実際、私は記事のサンプルプロジェクトを使用してV2.2でうまくビルドしましたが、V2.3バイナリ(emguとopencvの両方)で置き換えるとエラーになります。

誰でもEmgu( Version 2.3.x )x64プロジェクトを作成しましたか?いくつかのガイダンスを提供してください。

2
はい、opencvのバイナリを正しいをデバッグフォルダに追加しました。したがって、単純な欠落したdllエラーにはなりません。
追加された 著者 Mikos,
@クリス、ありがとう。私は手紙にあなたの指示に従った - それは本当に非常に有用だった。よろしくお願い申し上げます。
追加された 著者 Mikos,
"Image からImage への変換は、OpenCVの"
追加された 著者 Mikos,
私が直面しているエラーは、上記の変換(sic)エラーの後に続くTypeInitializationExceptionです。私は問題が何であるか分かりません。ご協力いただきありがとうございます。
追加された 著者 Mikos,
emgu 2.3(x64)と共有できるサンプルプロジェクトはありますか?
追加された 著者 Mikos,
コードベースは次のURLから入手できます: yousendit.com/download/T2dmNnFJYXk1R05WeHNUQw
追加された 著者 Mikos,
追加された 著者 Mikos,
こんにちはMikos、私は記事が私が書いたものであることを見つけることは非常に面白いことがわかった。私は今問題を見て、あなたに戻ってきます。乾杯
追加された 著者 Chris,
こんにちは、私はEMGU 2.3.0 x64を使ってプロジェクトをコンパイルしましたが、すべて正常に動作します。あなたが言及しているエラーは、正しいプラットフォームをターゲットにしていない可能性があります。 InnerExceptionが{"不正な形式のプログラムを読み込もうとしましたが(例外:HRESULT:0x8007000Bからの例外)"}その場合、これが問題です。あなたがそれを投稿することができない場合、私は問題を再現しようとすることができます。乾杯
追加された 著者 Chris,
それで、イメージタイプ間で変換するときです。チャンスは一度に複数のデータタイプを変換しようとしていますEMGUは何らかの理由でこれを好まないのです。したがって、からに変換したい場合は、次のImage My_double_image = my_BGR_BYTE_Image.Convert ()を実行する必要があります。 ();私はに変換してに変換することで同様のエラーを再現することができたので、データタイプの前に画像の深さを変換する必要があります。これがエラーを生成するコードを投稿するのに役立たない場合は、乾杯
追加された 著者 Chris,
私は仕事でチャンスを得るとすぐに新しい2.3.0のバージョンをコードプロジェクトにアップロードします
追加された 著者 Chris,

3 答え

このエラーの原因(他の人が同じ問題に遭遇した場合)は、出力 "bin"ディレクトリに存在するにもかかわらず、プログラムはopencv_imgproc231.dllまたはopencv_core231.dllにアクセスできなくなります。

2つのソリューションがあります。

    EMGUの2つの主要ファイルである copy always にプロジェクトを追加し、プロパティを設定します。

  1. 手順1がうまくいかない場合は、binフォルダ内の現在のキーファイルを新しいコピーに置き換えます。

両方の方法が失敗した場合、ビルドに問題がある可能性がありますので、SourceforgeからEMGUの新しいコピーをダウンロードして、もう一度試してください。エラーは後でそれを解決する方法のより明確な説明を提供するために技術記事内に組み込まれる。

乾杯、 クリス

4
追加された
こんにちは@Chris。私はそれらの2つの参照を私のプロジェクトに追加しようとしましたが、何とか私はそれを追加することができませんでした。それは参照がアクセスできないか、または有効なアセンブリ/ COMコンポーネントではない理由を追加できませんでした。助けてください!
追加された 著者 ykombinator,
ありがとう、私はそれを実行している。 :)
追加された 著者 ykombinator,
こんにちは、言及されているファイルは、EMGUが.NETコンポーネントではなく、出力ディレクトリまたはプロジェクト内の既存のファイルとして追加する必要がある管理されていないopencvコードです。 codeprojectの記事を参照してください。 codeproject.com/KB/cs/ EMGU_Image_Processing.aspx 乾杯
追加された 著者 Chris,

それらをプロジェクトに追加する必要はありません。 VSはあなたをさせません。 FaceRecognizer.cs を開くだけで、 public static partial class CvInvoke および変更:

[DllImport(CvInvoke.EXTERN_LIBRARY, CallingConvention = CvInvoke.CvCallingConvention)] 

に:

[DllImport(Emgu.CV.CvInvoke.EXTERN_LIBRARY, CallingConvention = Emgu.CV.CvInvoke.CvCallingConvention)] 

それらのすべてを変更してください。

1
追加された
VSはあなたをさせませんか?
追加された 著者 Austin Henley,

最初にこの方法でテストします:emgu cv installaitonディレクトリからサンプルプロジェクトを開き、それを実行します。たとえば、hello worldの例を開き、それを実行しようとします。サンプルプロジェクトが問題なく実行されている場合、インストールは正しいです。

emgu cvサンプルプロジェクトの場合、プロジェクトビルド設定の出力パスオプションの値は<..> '.. \ .. \ bin ']をクリックします。プロジェクトの問題を解決するには、ビジュアルスタジオでプロジェクトを開き、出力パスオプションの値を 'C:\ Emgu \ emgucv 2.9 \ bin' に設定します。プロジェクトを実行してみてください。それは成功する必要があります。

Now, set back the value of Output Path option to bin\Debug\. Then, add all DLL files in the 'C:\Emgu\emgucv 2.9\bin' folder to your project using ADD -> Existing Item menu. similarly, add all DLL files in the 'C:\Emgu\emgucv 2.9\bin\x64' folder to your project using ADD -> Existing Item menu. Now, go to properties window and set Copy to Output Directory option of all dll files to Copy Always. Finally, in the Configuration Manager window, create a new configuration for x64 platform.

がんばろう

0
追加された