Git Product home page Git Product logo

Comments (5)

takuya-takeuchi avatar takuya-takeuchi commented on May 26, 2024

You tried to use FrontalFaceDetector.Detect method for RGBA image?
If so, this method does not support RGBA image due to ristricts of dlib.

However, I may misunderstand what you faces to.
Would you show your code to recognize faces?

from dlibdotnet.

minhkhue avatar minhkhue commented on May 26, 2024

No, (i've tried this idead but, yes, the error message is "RGBAlphaPixel can not converted to Uint8")
What i desire to do is to detect the faces on resources online from the webcam and not from the images stocked on the machine. So instead of using LoadImage function (like used in the exemple); i use LoadImageData from a byte array to get Array2D. This byte array, I convert from the Color32 array provided by Unity.

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.IO;
using UnityEngine;
using DlibDotNet;
using System.Runtime.InteropServices;

namespace TestDlibDotNet
{
public class Class1
{
public int UnityTest(Color32[] color_array)
{
int lengt = 0;
using (var detector = FrontalFaceDetector.GetFrontalFaceDetector())
using (var img = Dlib.LoadImageData(Color32ArrayToByteArray(color_array), (uint)640, (uint)480, (uint)4))
{
Dlib.PyramidUp(img);
var dets = detector.Detect(img);

            try
            {
                lengt = dets.Length;
            }
            catch (InvalidCastException e)
            {
            }

        }
        return lengt;

    }
    public byte[] Color32ArrayToByteArray(Color32[] colors)
    {
        byte[] bytes = new byte[colors.Length * 4];
        for (int i = 0; i < bytes.Length/4; i += 4)
        {
            bytes[i]= colors[i].r;
            bytes[i+1] = colors[i].g;
            bytes[i+2] = colors[i].b;
            bytes[i+3] = colors[i].a;
           
        }
        return bytes;
    }


}

}

from dlibdotnet.

takuya-takeuchi avatar takuya-takeuchi commented on May 26, 2024

ok.
LoadImageData does not suit for this case.
LoadImageData treats argments as T type image. It means that this function does not convert color format.

If you expect this function convert image to grayscale, it's wrong.
In addition, 4th argment of LoadImageData is not channels but srtide.
In this case, It could be 640 x 4.

Therefore, you should convert image to grayscale or RGB manually.

from dlibdotnet.

minhkhue avatar minhkhue commented on May 26, 2024

Thanks, so finally, i need to manually convert my image resources from webcam to grayscale and then convert the last one to byte array ? What it means The 4th parameter (uint step) in LoadImageData ? :D

from dlibdotnet.

takuya-takeuchi avatar takuya-takeuchi commented on May 26, 2024

Step is Stride. This parameter equals to last parameter of System.Windows.Media.Imaging.BitmapSource.Create.
Generally, stride is byte size per line and it equals to image width * channels. However, some image format; eg bmp does not equals to.
Please get further information from https://en.wikipedia.org/wiki/BMP_file_format.

from dlibdotnet.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.