1

emguCV を C# および .NET と共に使用する楽しいコーディング プロジェクトに取り組んでいます。私が抱えている問題は、コードで Capture() クラスを初期化しようとしていることです。Capture を初期化しようとするたびに、例外がスローされます。

    The Type initializer for 'Emgu.CV.CvInvoke' threw an Exception
    Exception type: System.InitializationException from Emgu.CV.dll

ここに私が持っているC#コードがあります:

class Vision
{
    private Capture cap;
    private HaarCascade haar;
    private Form1 form;

    public Vision()
    {
            form = new Form1();
            cap = new Capture();
            haar = new HaarCascade("C:\\haarcascade_frontalface_alt2.xml");
    }
    public void faceDetect()
    {
        using(Image<Bgr, Byte> nextFrame = cap.QueryFrame())
        {
            if(nextFrame != null)
            {
                Image<Gray, Byte> grayframe = nextFrame.Convert<Gray, Byte>();
                var faces = grayframe.DetectHaarCascade(haar, 1.4, 4, HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(nextFrame.Width / 8, nextFrame.Height / 8))[0];
                foreach(var face in faces)
                {
                    nextFrame.Draw(face.rect, new Bgr(0, double.MaxValue, 0), 1);
                }
                form.setImage(nextFrame.ToBitmap());
            }
        }
    }
}

コードの参照は次のとおりです。

    using System;
    using System.Collections.Generic;
    using System.Linq;
    using System.Text;
    using System.Threading.Tasks;
    using Emgu.CV;
    using Emgu.Util;
    using Emgu.CV.Structure;
    using Emgu.CV.CvEnum;
    using System.Drawing;

例外が発生するたびに、cap = new Capture(); に表示されます。

また、Capture クラスのカメラ インデックスを 0,1,2... に設定しようとしましたが、うまくいきませんでした。また、MacでWindowsを実行しているため、Webカメラが検出されないのではないかと思いましたが、Windowsがカメラにアクセスするための最新のドライバーをダウンロードしました。事前に助けてくれたすべての人に感謝します!:-)

4

3 に答える 3

0

x64 マシンを使用している場合は、プロジェクト設定を変更する必要があります。プロジェクト設定 -> ビルド -> ターゲット プラットフォーム -> x64 に移動します。詳細はこちら: http://www.emgu.com/wiki/index.php/Setting_up_EMGU_C_Sharp

于 2014-08-23T23:04:45.580 に答える
0

これは、アンマネージ DLL の依存関係の読み込みに失敗した場合に発生する可能性があります。次のことを試してください。

  1. 正しいバージョンの EmguCV を使用していることを確認してください。つまり、ソリューションを x86 モードでビルドしている場合は、x86 バージョンの EmguCV が必要であり、x64 バージョンの場合も同様です。

  2. OpenCV DLL が PATH にあることを確認します (または、これが Console/WinForms/WPF アプリの場合は直接 bin ディレクトリにあります)。

方法はこちらで確認できます。

こちらから公式ドキュメントを参照することもできます

于 2013-10-07T11:28:24.983 に答える