[ad_1]
x32ビットOSでは例外が生成されますが、x64ビットOSでは正常に動作するコードがあります:「’Emgu.CV.CvInvoke’の型初期化子が例外をスローしました。」
インターネットからのほぼ解決策に従いましたが、それでも問題は解決できませんでした。
アンマネージDLLを実行ファイルディレクトリに配置しようとしました。
ターゲットフレームワークx86をビルドしました。
DLLをc:\windows\system32に入れることも試しました。
ほぼすべての解決策。
デモプロジェクトもテストしましたが、依然として同じ問題が発生しています。
x64 ビット OS では完璧に動作しましたが、ランタイム例外「’Emgu.CV.CvInvoke’ の型初期化子が例外をスローしました。<」が発生します。
私が試したこと:
私はemgucvライブラリを使用して画像処理を行っています。 以前にemgu cvライブラリを使用しましたが、このエラーは一度も発生しませんでした。 インターネットの解決策やソースからほぼすべての解決策を試しました。
これがデモプロジェクトのサンプルコードです。
C#
private void Application_Idle(object sender, EventArgs e) { String FileName = @"E:\Demo\EmguCv-Histogram-01-master\S\ResizedImages\dblbig.jpg"; Image<Bgr, Byte> InputImage; InputImage = new Image<Bgr, byte>(FileName); mainImage = InputImage; //webcamCapture.QueryFrame().ToImage<Bgr, Byte>(); if (mainImage == null) return; processedImage = mainImage.InRange(new Bgr(120, 0, 0), new Bgr(256, 70, 70)); processedImage = processedImage.SmoothGaussian(9); CircleF[] circles = processedImage.HoughCircles(new Gray(100), new Gray(50), 2, processedImage.Height / 4, 10, 400).SelectMany(u => u.Select(s => s)).ToArray(); foreach (var c in circles) { if (txtLog.Text != "") txtLog.AppendText(Environment.NewLine); CvInvoke.Circle(mainImage, new Point((int)c.Center.X, (int)c.Center.Y), 3, new MCvScalar(0, 255, 0), -1, Emgu.CV.CvEnum.LineType.AntiAlias, 0); mainImage.Draw(c, new Bgr(Color.Red), 3); } imageBox1.Image = mainImage; imageBox2.Image = processedImage; }
解決策 1
OpenCV は 64 ビットまたは 32 ビットとしてビルドされます。 アプリケーションを 32 ビット プロセッサで実行しようとしている場合は、32 ビット DLL を追加する必要があります。 これ[^] 32 ビット バージョンをビルドする方法の詳細。
[ad_2]
コメント