DlibDotNet 无法检测来自网络摄像头的位图流中的人脸

问题描述

我有一种方法可以从网络摄像头获取视频作为位图流,我有一种方法可以从图片中检测人脸并在它们周围绘制一个矩形

public void start_cam_stream()
        {
            string[] devices = UsbCamera.FindDevices();
            if (devices.Length == 0) MessageBox.Show("no camera");

            int cameraIndex = 0;
            UsbCamera.VideoFormat[] formats = UsbCamera.GetVideoFormat(cameraIndex);

            var camera = new UsbCamera(cameraIndex,formats[0]);
            camera.Start();

            var bmp = camera.GetBitmap();
            

            var timer = new System.Timers.Timer(100) { SynchronizingObject = this };
            //timer.Elapsed += (s,ev) => pictureBox1.Image = camera.GetBitmap();
            timer.Elapsed += (s,ev) => detectfaces(camera.GetBitmap()); 

            timer.Start();

            


            // release resource when close.
            this.FormClosing += (s,ev) => timer.Stop();
            this.FormClosing += (s,ev) => camera.Stop();

        }

        public void detectfaces(Bitmap original_bmp)
        {
            Bitmap imgbmp;
            var img = DlibDotNet.Extensions.BitmapExtensions.ToArray2D<RgbPixel>(original_bmp);

            using (var fd = Dlib.GetFrontalFaceDetector())
            {



                // find all faces in the image
                var faces = fd.Operator(img);
                foreach (var face in faces)
                {
                    // draw a rectangle for each face
                    Dlib.DrawRectangle(img,face,color: new RgbPixel(0,255,255),thickness: 4);
                }
                detectedbmp = BitmapExtensions.ToBitmap<RgbPixel>(img);

            }
            pictureBox1.Image = original_bmp;
            pictureBox2.Image = detectedbmp;
        }

我想要做的是从camera.GetBitmap() 中获取每个位图并将“detectfaces()”方法应用于它,并将“修改后的位图”放在第二个图片框中。

当处理单个图像时,detectfaces 方法可以正常工作,另外我将位图转换为 2Darray,以便 Dlib 可以使用它并将其转换回 bmp,以便它可以显示在图片框中。

但是,当我执行两个图片框时保持空白,就好像我没有对它们的“图像”属性应用任何内容

这是我第一次使用面部识别库和类似的东西,所以我不确定我做错了什么,谷歌在这种情况下没有那么有用。

如果有人有一个完全不同的解决方案可以正常工作(使用除 dlib 之外的其他库),我准备尝试一下。

(ps:摄影是这个人https://github.com/secile/UsbCamera

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)