使用 emgucv (c#) 查找人脸的位置
Finding the position of a face using emgucv (c#)
我的代码能够检测到人脸,然后在它找到人脸的地方放置一个盒子,但我想知道它放置的盒子的位置。
任何职位都很好,因为我可以为特定职位调整其他代码。
我怎样才能得到这个职位?
非常感谢
private void Device_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone();
Image<Bgr, byte> grayImage = new Image<Bgr, byte>(bitmap);
Rectangle[] rectangles = cascadeClassifier1.DetectMultiScale(grayImage, 1.2, 1);
foreach (Rectangle rectangle in rectangles)
{
using (Graphics graphics = Graphics.FromImage(bitmap))
{
using (Pen pen = new Pen(Color.Red, 1))
{
graphics.DrawRectangle(pen, rectangle);
}
}
}
plc.Image = bitmap;
}
可以得到矩形左上角的x和y坐标,以及宽和高。
//Get the top left cord
int rectX = rectangle.X;
int rectY = rectangle.Y;
//Get the width and height of the rectangle
int rectWidth = rectangle.Width;
int rectHeight = rectangle.Height;
利用上面的值,你可以求出矩形其他三个点的连线。
//The top right cord
int topRightX = rectX + rectWidth;
int topRightY = rectY;
//The bottom left cord
int bottomX = rectX;
int bottomY = rectY + rectHeight;
//The bottom right cord
int bottomRightX = rectX + rectWidth;
int bottomRightY = rectY + rectHeight;
我的代码能够检测到人脸,然后在它找到人脸的地方放置一个盒子,但我想知道它放置的盒子的位置。 任何职位都很好,因为我可以为特定职位调整其他代码。
我怎样才能得到这个职位?
非常感谢
private void Device_NewFrame(object sender, NewFrameEventArgs eventArgs)
{
Bitmap bitmap = (Bitmap)eventArgs.Frame.Clone();
Image<Bgr, byte> grayImage = new Image<Bgr, byte>(bitmap);
Rectangle[] rectangles = cascadeClassifier1.DetectMultiScale(grayImage, 1.2, 1);
foreach (Rectangle rectangle in rectangles)
{
using (Graphics graphics = Graphics.FromImage(bitmap))
{
using (Pen pen = new Pen(Color.Red, 1))
{
graphics.DrawRectangle(pen, rectangle);
}
}
}
plc.Image = bitmap;
}
可以得到矩形左上角的x和y坐标,以及宽和高。
//Get the top left cord
int rectX = rectangle.X;
int rectY = rectangle.Y;
//Get the width and height of the rectangle
int rectWidth = rectangle.Width;
int rectHeight = rectangle.Height;
利用上面的值,你可以求出矩形其他三个点的连线。
//The top right cord
int topRightX = rectX + rectWidth;
int topRightY = rectY;
//The bottom left cord
int bottomX = rectX;
int bottomY = rectY + rectHeight;
//The bottom right cord
int bottomRightX = rectX + rectWidth;
int bottomRightY = rectY + rectHeight;