Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/310.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/mongodb/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 使用OpenCvSharp绘制矩形_C#_.net_Opencv_Facial Identification - Fatal编程技术网

C# 使用OpenCvSharp绘制矩形

C# 使用OpenCvSharp绘制矩形,c#,.net,opencv,facial-identification,C#,.net,Opencv,Facial Identification,我正试图画一个视频中检测到的人脸,但我似乎很难让它工作 var haarcascade = new CascadeClassifier("C:/Users/NotMyName/Desktop/haar/haarcascade_frontalface_alt2.xml"); using (Window window = new Window("capture")) using (Mat image = new Mat())//Image Buffer {

我正试图画一个视频中检测到的人脸,但我似乎很难让它工作

var haarcascade = new CascadeClassifier("C:/Users/NotMyName/Desktop/haar/haarcascade_frontalface_alt2.xml");
using (Window window = new Window("capture"))
using (Mat image = new Mat())//Image Buffer
{
    while (true)
    {
        Video.Read(image);
        var gray = image.CvtColor(ColorConversionCodes.RGB2GRAY);
        OpenCvSharp.Rect[] faces = haarcascade.DetectMultiScale(gray, 1.08, 2, HaarDetectionTypes.ScaleImage, new OpenCvSharp.Size(30,30));
        foreach (Rect i in faces)
        {
            Cv2.Rectangle(image, (faces[i].BottomRight.X, faces[i].BottomRight.Y), (faces[i].TopLeft.X, faces[i].TopLeft.Y), 255, 1);
        }
然而,编译器只是在抛出错误。将faces数组直接传递给函数也不起作用。错误消息为(德语翻译)

错误CS0029类型“OpenCvSharp.Rect”无法转换为“int”


我认为正确的方法应该是:

...
foreach (Rect i in faces)
{
    Cv2.Rectangle(image, new Point(i.BottomRight.X, i.BottomRight.Y), new Point(i.TopLeft.X, i.TopLeft.Y), 255, 1);
}
....
foreach引用中的局部变量
i
指向current
Rect


Cv2.Rectangle
方法接受
OpenCvSharp.Point
您可以直接使用
Rect
变量:

foreach (Rect r in faces)
    Cv2.Rectangle(image, (r.BottomRight.X, r.BottomRight.Y), (r.TopLeft.X, r.TopLeft.Y), 255, 1);
或者使用
int
,如下所示:

foreach (int i = 0; i < faces.Length; i++)
    Cv2.Rectangle(image, (faces[i].BottomRight.X, faces[i].BottomRight.Y), (faces[i].TopLeft.X, faces[i].TopLeft.Y), 255, 1);
foreach(inti=0;i
哪一行触发了该错误?正是这一行,但是,正如您所指出的,它要求我将其指定为OpenCvSharp.Point。谢谢你的帮助:)