然后点击取得连接,蓝色区域将会橘清显示远程摄像头采集的视频图像,
此时将捕捉人脸,并识别,
侧脸时,由于我使用的是之前训练的识别库,这个角度没法识别出我的脸,
调整角度后结果就如下图,识别出我的脸,并显示出在识别库对应的我的名字。
当点击训练识别时将调用笔记本的摄像头进行训练,界面如下(此段是参考别人的训练方法)
在训练框中的名字栏填写要的存储对应头像的人名。
训练完成后,关闭窗口,自动回调出远程视频连接。圆信前
再来测试一下识别能力
同为侧面角度,就能识别出人脸并检测了。
public partial class VideoForm : Form
{
private Image<Bgr, byte>currentImage//设置当前画面
Image<Gray, byte>result = null//返回帧
Image<Gray, byte>gray_frame = null//灰度帧
public HaarCascade Face = new HaarCascade(Application.StartupPath + "/Cascades/haarcascade_frontalface_alt2.xml")//载入训练库数据
MCvFont font = new MCvFont(FONT.CV_FONT_HERSHEY_COMPLEX, 0.5, 0.5)//设置摄像头字体
//Classifier with default training location
Classifier_Train Eigen_Recog = new Classifier_Train()//实例化坦链一个分类训练器
public VideoForm()
{
InitializeComponent()
}
private void showVideo(object sender, EventArgs e)
{ MyCaputre myCap = new MyCaputre()
string sourceURL = this.textBox1.Text
Bitmap bmp = myCap.myCaputre(sourceURL)
currentImage = new Image<Bgr, byte>(bmp)
markFace(currentImage)
pictureBox1.Image = new System.Drawing.Bitmap(currentImage.ToBitmap(), 850, 660)
}
private Image<Bgr, byte>markFace(Image<Bgr, byte>pic)
{
currentImage =currentImage.Resize(320, 240, Emgu.CV.CvEnum.INTER.CV_INTER_CUBIC)
if (currentImage != null)
{
gray_frame = currentImage.Convert<Gray, Byte>()
MCvAvgComp[][] facesDetected = gray_frame.DetectHaarCascade(Face, 1.2, 10, Emgu.CV.CvEnum.HAAR_DETECTION_TYPE.DO_CANNY_PRUNING, new Size(50, 50))
“Emgu.CV.CvInvoke”的类型初缓前冲始值设定项引发异常的解决方法具体步骤如下:
1.运行程序直接崩溃, 然后悔蚂debug时找到了在这里崩溃的。
2.查看详细信息, 点看左边的小三角, 发现了根源。
上面有一句: "{"无法加载 DLL“opencv_core231”: 找不到指定的模块。 (异常来自 HRESULT:0x8007007E)。"}"从网上下一个opencv_core231.dll放到debug文件夹中可以解决问题, 但毕竟不是长久之计。
3.重扰歼新点开引用添加界面。
4.把2.9的引用进来就解决问题了。
1、首先保证的电脑已经装好了openCV,并且保证环境变量已经设置好。具体参照OpenCV官方中文网站,写得很清楚。2、下载EmguCV压缩包,其实就是几个可以在VisualStudio2005/2008中引用OpenCV的函数的dll库。下的是1.50版,“Emgu.CV.Windows.Binary-1.5.0.0.zip”。解压该压缩包,并把其DLL拷贝在OpenCV安装目录下的Bin文件夹里。3、新建一个c#窗体应用程序,添加Bin目录下“Emgu.CV.dll”,“Emgu.Util.dll”等伍孝链DLL的引用,还有些窗体的控件,主要是将Emgu.CV.UI.dll加腔孙入工具箱慎谨中,加入後会出现ImageBox、HistogramCtrl。4、然后,再程序的开头中加上usingEmgu.CVusingEmgu.Util等命名空间之后就可以用EmguCV中所有的库函数了。欢迎分享,转载请注明来源:内存溢出
评论列表(0条)