【发布时间】:2014-04-12 09:03:02
【问题描述】:
我正在尝试使用“haar cascade”选择和播放视频文件并检测人脸。当我选择一个视频文件时,它在这一行显示异常“ArgumentException was unhandled”
int len = (int)memde.StreamLength;
这是我使用的代码:
private void button1_Click(object sender, EventArgs e)
{
OpenFileDialog openFileDialog1 = new OpenFileDialog();
if (openFileDialog1.ShowDialog() == System.Windows.Forms.DialogResult.OK)
{
memde = new MediaDetClass();
System.IO.Directory.CreateDirectory("temp");
int len = (int)memde.StreamLength;
label1.Text = "Length: " + len.ToString();
trackBar1.Minimum = 0;
trackBar1.Maximum = len;
trackBar1.Value = 0;
counter = 0;
Image img;
memde.Filename = openFileDialog1.FileName;
memde.CurrentStream = 0;
float percent = 0.002f;
Image<Gray, byte> gray;
for (float i = 0.0f; i < len; i = i + (float)(percent * len))
{
counter++;
string fbitname = storagepath + counter.ToString();
memde.WriteBitmapBits(i, 850, 480, fbitname + ".bmp");
pictureBox1.Image = new Bitmap(fbitname);
img = Image.FromFile(fbitname + ".bmp");
img.Save(fbitname + ".bmp", ImageFormat.Bmp);
System.IO.File.Delete(i + fbitname + ".bmp");
Image<Bgr, Byte> image = new Image<Bgr, Byte>(new Bitmap(img));
gray = image.Convert<Gray, Byte>();
MCvAvgComp[][] facesDetected = gray.DetectHaarCascade(
face,
1.2,
10,
Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,
new Size(20, 20));
foreach (MCvAvgComp f in facesDetected[0])
{
result = image.Copy(f.rect).Convert<Gray, byte>().Resize(100, 100, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC);
image.Draw(f.rect, new Bgr(Color.Red), 2);
}
}
}
}
【问题讨论】:
-
您好,作为您方法的替代方法,EMGUcv 的捕获类支持视频文件。这里和例子emgu.com/wiki/index.php?title=Video_Files Cheers
标签: c# asp.net emgucv face-detection