vs2015和emgu3.4.3可以配置吗
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vs2015和emgu3.4.3可以配置吗相关的知识,希望对你有一定的参考价值。
我使用的VS是2015版本,这个并不影响后续内容我使用的openCV是3.2版本,同样这一版本也并非必须,但是推荐大家使用比较新的版本,具体可以到官网下载。
首先双击openCV安装,目录随意。
新建一个MFC对话框项目,依次点击:“项目”-“属性”-“VC++目录”
点击右侧的“包含目录”-“编辑”
将你安装的openCV目录下的build\include和build\include\opencv以及build\include\opencv2添加进来,如下图所示(我的openCV安装目录在D:\openCV).
“VC++目录”-“库目录”-“编辑”
将build\x64\vc14\lib目录添加进来,如图所示
再在刚才的属性对话框中点击“链接器”-“输入”-“附加依赖项”
点击“编辑”如图所示
将openCV目录下的build\x64\vc14\lib中的两个扩展名为.lib的文件添加进去(相比于之前版本的openCV需要大量添加lib文件实在是简单许多)
好了大功告成,接下来就可以使用openCV了,不过要注意需要将解决方案平台改为x64,如下图所示
具体摄像头使用代码如下图所示。其中前两行注释是用来显示图片的,本质上显示图片和显示视频是一样的,只不过视频是连续地显示图片 参考技术A 我使用的VS是2015版本,这个并不影响后续内容
图像数据访问和图像匹配中的 C# 和 EMgu CV
【中文标题】图像数据访问和图像匹配中的 C# 和 EMgu CV【英文标题】:C# and EMgu CV in image data accessing & image matching 【发布时间】:2013-12-21 01:37:01 【问题描述】:我目前正在使用 C# 和 Emgu CV 在学生注册系统中创建实时人脸识别程序。 在开发它的过程中,我在访问图像数据和为其赋值时发现了几个问题。
我的问题如下:
我可以知道如何从我从网络摄像头捕获的图像中直接访问图像数据吗?或者,网络摄像头的“实时图像”如何连接到我的图像数据以处理人脸图像匹配?
非常欢迎任何有关解决此问题的建议。
感谢和问候,
蔡崇信
【问题讨论】:
【参考方案1】:要在 EmguCV 中捕获图像,您必须使用 capture
对象。
Capture capture = new Capture(); //create a camera capture
然后您可以添加这样的事件处理程序,以便在应用程序空闲时捕获新帧。
Application.Idle += new EventHandler(delegate(object sender, EventArgs e)
Image<Bgr,Byte> latestFrame = capture.QueryFrame(); //draw the image obtained from camera
);
现在这个latestFrame
变量将包含从网络摄像头捕获的当前帧,您可以对其应用各种类型的图像处理。
PS:要了解更多关于 EmguCV 以及如何构建人脸识别系统,建议您查看此link
【讨论】:
【参考方案2】: private void DetectFaces()
try
Image<Gray, byte> grayframe = TestImage.Convert<Gray, byte>();
//Assign user-defined Values to parameter variables:
MinNeighbors = int.Parse(comboBoxMinNeigh.Text); // the 3rd parameter
WindowsSize = int.Parse(textBoxWinSiz.Text); // the 5th parameter
ScaleIncreaseRate = Double.Parse(comboBoxScIncRte.Text); //the 2nd parameter
//detect faces from the gray-scale image and store into an array of type 'var',i.e 'MCvAvgComp[]'
var faces = grayframe.DetectHaarCascade(haar, ScaleIncreaseRate, MinNeighbors,
HAAR_DETECTION_TYPE.DO_CANNY_PRUNING,
new Size(WindowsSize, WindowsSize))[0];
if (faces.Length > 0)
MessageBox.Show("Total Faces Detected: " + faces.Length.ToString());
Bitmap BmpInput = grayframe.ToBitmap();
Bitmap ExtractedFace; // an empty "box"/"image" to hold the extracted face.
Graphics FaceCanvas;
//Set The Face Number
//FaceCollection = Directory.GetFiles(@"Face Collection\", "*.bmp");
//int FaceNo = FaceCollection.Length;
//A Bitmap Array to hold the extracted faces
EXfaces = new Bitmap[faces.Length];
int i = 0;
//draw a green rectangle on each detected face in image
foreach (var face in faces)
//locate the detected face & mark with a rectangle
TestImage.Draw(face.rect, new Bgr(Color.Green), 3);
//set the size of the empty box(ExtractedFace) which will later contain the detected face
ExtractedFace = new Bitmap(face.rect.Width, face.rect.Height);
//set empty image as FaceCanvas, for painting
FaceCanvas = Graphics.FromImage(ExtractedFace);
//graphics draws the located face on the faceCancas, thus filling the empty ExtractedFace
//image with exact pixels of the face to be extracted from input image
FaceCanvas.DrawImage(BmpInput, 0, 0, face.rect, GraphicsUnit.Pixel);
//save this extracted face to hard disk
//ExtractedFace.Save(@"Face Collection\" + "Face_" + (FaceNo++) + ".bmp");//save images in folder
//Save this extracted face to array
EXfaces[i] = ExtractedFace;
i++;
//Display the detected faces in imagebox
imageBox1.Image = TestImage;
MessageBox.Show(faces.Length.ToString() + " Face(s) Extracted sucessfully!");
imageBox2.Image = new Emgu.CV.Image<Bgr, Byte>(EXfaces[0]);
button3.Enabled = true;
textBox1.Enabled = true;
else
MessageBox.Show("NO faces Detected!");
catch (Exception ex)
MessageBox.Show(ex.Message.ToString());
MessageBox.Show(ex.StackTrace.ToString());
这是我的代码,可能对你有帮助
【讨论】:
以上是关于vs2015和emgu3.4.3可以配置吗的主要内容,如果未能解决你的问题,请参考以下文章