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がカメラにアクセスするための最新のドライバーをダウンロードしました。事前に助けてくれたすべての人に感謝します!:-)