1. Bonjour tout le monde ! Veillez consulter la Politique de forum pour comprendre nos règles, Merci a vous !
    Rejeter la notice

TUTO OpenCv Face detection WM 25

Discussion dans 'Windev Mobile' créé par redha2010, Mai 10, 2021.

  1. redha2010

    redha2010 Active Member

    Inscrit:
    Jan 25, 2018
    Messages:
    230
    J'aime reçus:
    226
    Salam
    Ce TUTO ne discutera pas sur la bibliothèque OpenCV

    Le principe de travail sur Opencv avec les photo consiste a transformer la photo en matrice
    après on utilise les fonctions de traitement d'image sur cette matrice est enfin on récupère
    les résultats en forme photo pour l'afficher

    dépendances distantes a ajouter:

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    Fenêtre avec 2 boutons charger photo et détection
    le nom du composant Image est :"IMG_Src"

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!



    on ajoute une procédure globale avec une fonction en code java:

    Code (Text):

    import android.widget.Toast;
    import android.graphics.BitmapFactory;
    import org.opencv.android.OpenCVLoader;
    import org.opencv.android.Utils;
    import android.widget.ImageView;
    import android.graphics.Bitmap;
    import android.os.Environment;
    import org.opencv.core.*;

    import org.opencv.core.MatOfRect;
    import org.opencv.core.Rect;
    import org.opencv.imgproc.Imgproc;
    import org.opencv.objdetect.CascadeClassifier;


    public static void DetectFaceOpenCv(String filePath)
    {
        OpenCVLoader.initDebug();
        ImageView imsrc = (ImageView) getView("IMG_Src");
       
        Bitmap capturedImg = null;
       
        capturedImg = BitmapFactory.decodeFile(filePath);
        Mat src = new Mat();
        Utils.bitmapToMat(capturedImg, src);
       
        CascadeClassifier faceDetector = new CascadeClassifier(Environment.getExternalStorageDirectory().toString()+"/tessdata/lbpcascade_frontalface.xml");
        //gray img --> equalize histogram --> input to the classifier
        Mat grayFrame = new Mat();
        Imgproc.cvtColor(src, grayFrame, Imgproc.COLOR_BGR2GRAY);
        Imgproc.equalizeHist(grayFrame, grayFrame);
       
        MatOfRect facesDetected = new MatOfRect();
        faceDetector.detectMultiScale(grayFrame, facesDetected); //the detected faces are returned in facesDetected
               
        for (Rect faces : facesDetected.toArray()) {
            Imgproc.rectangle(
            src,                                               // where to draw the box
            new Point(faces.x, faces.y),                            // bottom left
            new Point(faces.x + faces.width, faces.y + faces.height), // top right
            new Scalar(0, 0, 255),
            3                                                     // RGB colour
            );
        }
       
        Utils.matToBitmap(src, capturedImg);
        imsrc.setScaleType(ImageView.ScaleType.FIT_XY);
        imsrc.setImageBitmap(capturedImg);
    }
     
    Note:
    Pour la détection des visage on utilise un fichier xml lbpcascade_frontalface.xml

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    pour moi j'ai copier le fichier dans mon téléphone dans un répertoire 'tessdata'
    on peut l'ajouter dans les ressources

     
    Tags:
  2. redha2010

    redha2010 Active Member

    Inscrit:
    Jan 25, 2018
    Messages:
    230
    J'aime reçus:
    226
    CODE SOURCE
     

    Fichiers attachés:

  3. Ricardo Cassolatto

    Ricardo Cassolatto New Member

    Inscrit:
    Mar 27, 2021
    Messages:
    19
    J'aime reçus:
    0
    merci ! fantastique !
     
  4. Ricardo Cassolatto

    Ricardo Cassolatto New Member

    Inscrit:
    Mar 27, 2021
    Messages:
    19
    J'aime reçus:
    0
    merci, ce fantastique !
     
  5. Ricardo Cassolatto

    Ricardo Cassolatto New Member

    Inscrit:
    Mar 27, 2021
    Messages:
    19
    J'aime reçus:
    0
    vocêshis link

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    doesn´t existis anymore, it´ll cause some problem ?

    You developed itself the java code ? or just copied the source ?

    Merci
     
  6. redha2010

    redha2010 Active Member

    Inscrit:
    Jan 25, 2018
    Messages:
    230
    J'aime reçus:
    226

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    vocêshis link

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    doesn´t existis anymore, it´ll cause some problem ?

    You developed itself the java code ? or just copied the source ?

    Merci
    Cliquez pour agrandir...
    Non , je vois que la version 4.3.0 n'est pas accessible mais tu peux utiliser d'autre version voir:

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
  • perceval

    perceval Member
    WXG24 MEMBRE WX

    Inscrit:
    Mai 19, 2018
    Messages:
    54
    J'aime reçus:
    27
    I use this one often:

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

     
  • popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,961
    J'aime reçus:
    1,575

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    curieux de savoir comment tu integre du c++ dans windev mobile Android ?
    A ma connaissance c'est pas possible.
     
    Gemini1961 apprécie ceci.
  • Ricardo Cassolatto

    Ricardo Cassolatto New Member

    Inscrit:
    Mar 27, 2021
    Messages:
    19
    J'aime reçus:
    0
    Good Morning, how are you,

    I´m getting lost, it´s givinme this error, and I don´t have any idea what is this ! Can you , please, help me ?

    Thank you so much

    ===== Error =====
    Date and time=11/02/2023 13:25:15
    Message=Internal error.
    System message=cv::Exception: OpenCV(4.4.0) /home/quickbirdstudios/opencv/opencv/modules/objdetect/src/cascadedetect.cpp:1689: error: (-215:Assertion failed) !empty() in function 'detectMultiScale'
    Process=Click WIN_FaceRecog.BTN_Detectar_Face
    WLanguage stack=Click WIN_FaceRecog.BTN_Detectar_Face
    Java stack=org.opencv.objdetect.CascadeClassifier.detectMultiScale_5(Native Method)
    org.opencv.objdetect.CascadeClassifier.detectMultiScale(CascadeClassifier.java:291)
    com.mycompany.sigmaapontamento.wdgen.GWDCPCOL_OpenCVFaceRecog.DetectFaceOpenCv(GWDCPCOL_OpenCVFaceRecog.java:121)
    com.mycompany.sigmaapontamento.wdgen.GWDFWIN_FaceRecog$GWDBTN_Detectar_Face.clicSurBoutonGauche(GWDFWIN_FaceRecog.java:400)
    fr.pcsoft.wdjava.ui.h.executerTraitement(Unknown Source:125)
    fr.pcsoft.wdjava.ui.champs.w.executerTraitement(Unknown Source:9)
    fr.pcsoft.wdjava.ui.g.a(Unknown Source:4)
    fr.pcsoft.wdjava.ui.g.appelPCode(Unknown Source:88)
    fr.pcsoft.wdjava.ui.h.appelPCode(Unknown Source:0)
    fr.pcsoft.wdjava.ui.champs.t.appelPCode(Unknown Source:9)
    fr.pcsoft.wdjava.ui.h.appelPCode_TLM(Unknown Source:17)
    fr.pcsoft.wdjava.ui.champs.bouton.WDBouton$a.onClick(Unknown Source:119)
    android.view.View.performClick(View.java:8160)
    android.widget.TextView.performClick(TextView.java:16222)
    android.view.View.performClickInternal(View.java:8137)
    android.view.View.access$3700(View.java:888)
    android.view.View$PerformClick.run(View.java:30236)
    android.os.Handler.handleCallback(Handler.java:938)
    android.os.Handler.dispatchMessage(Handler.java:99)
    android.os.Looper.loop(Looper.java:246)
    android.app.ActivityThread.main(ActivityThread.java:865:relievedface:
    java.lang.reflect.Method.invoke(Native Method)
    com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:602)
    com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1130)
    Thread=id=2
    name=main
    priority=5
    groupName=main
     
  • Ricardo Cassolatto

    Ricardo Cassolatto New Member

    Inscrit:
    Mar 27, 2021
    Messages:
    19
    J'aime reçus:
    0
    when I try to add the xml frontalface, give me this error too. ! Your source, I can´t open it in the version 28 !

    Thank you in advance again !



    **********************************************

    The XML document has not been loaded.
    System error details:

    Row 16, Column 76: Specification mandates value for attribute crossorigin
    Row 79, Column 90: Specification mandates value for attribute data-turbo-transient
    Row 85, Column 70: Specification mandates value for attribute data-turbo-transient
    Row 145, Column 161: Specification mandates value for attribute data-turbo-transient
    Row 165, Column 10: Opening and ending tag mismatch: link line 163 and head
    Row 168, Column 26: Specification mandates value for attribute data-turbo-body
    Row 168, Column 26: attributes construct error
    Row 168, Column 26: Couldn't find end of Start Tag div line 168
    Row 201, Column 23: Entity 'nbsp' not defined
    Row 553, Column 52: Opening and ending tag mismatch: div line 552 and option

    ....
     
  • redha2010

    redha2010 Active Member

    Inscrit:
    Jan 25, 2018
    Messages:
    230
    J'aime reçus:
    226

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    when I try to add the xml frontalface, give me this error too. ! Your source, I can´t open it in the version 28 !

    Thank you in advance again !



    **********************************************

    The XML document has not been loaded.
    System error details:

    Row 16, Column 76: Specification mandates value for attribute crossorigin
    Row 79, Column 90: Specification mandates value for attribute data-turbo-transient
    Row 85, Column 70: Specification mandates value for attribute data-turbo-transient
    Row 145, Column 161: Specification mandates value for attribute data-turbo-transient
    Row 165, Column 10: Opening and ending tag mismatch: link line 163 and head
    Row 168, Column 26: Specification mandates value for attribute data-turbo-body
    Row 168, Column 26: attributes construct error
    Row 168, Column 26: Couldn't find end of Start Tag div line 168
    Row 201, Column 23: Entity 'nbsp' not defined
    Row 553, Column 52: Opening and ending tag mismatch: div line 552 and option

    ....
    Cliquez pour agrandir...
    I think you are not using OpenCv by adding repositories in Gradle
    try using this clean version off the code source in attached files
    the xml file i used located in EXE folder
    Bonne Chance :)
     

    Fichiers attachés:

    WX1331 apprécie ceci.
  • Ricardo Cassolatto

    Ricardo Cassolatto New Member

    Inscrit:
    Mar 27, 2021
    Messages:
    19
    J'aime reçus:
    0
    Merci ! I´ll return the results ! Merci beacoup !

    You do a great job showing us the possibilities with Java,k to a non java programmers !

    Thanks !
     
  • Ricardo Cassolatto

    Ricardo Cassolatto New Member

    Inscrit:
    Mar 27, 2021
    Messages:
    19
    J'aime reçus:
    0
    [​IMG]
     

    Fichiers attachés:

  • redha2010

    redha2010 Active Member

    Inscrit:
    Jan 25, 2018
    Messages:
    230
    J'aime reçus:
    226

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    [​IMG]
    Cliquez pour agrandir...
    Its windev mobile project not windev project
    sorry
     
  • Ricardo Cassolatto

    Ricardo Cassolatto New Member

    Inscrit:
    Mar 27, 2021
    Messages:
    19
    J'aime reçus:
    0
    no, now the windev are integrated, It executes windev mobile, windev and webdev at the same place , it´s integrated !
     
  • popoy

    popoy Well-Known Member
    MEMBRE WX

    Inscrit:
    Fev 23, 2018
    Messages:
    2,961
    J'aime reçus:
    1,575

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    , c'est une erreur dl
    Cela signifie que le projet à été fait avec une version pirate de windev mobile
    Pour pouvoir l'ouvrir, il faut ouvrir le projet en windev mobile 25 , faire une réparation puis recouvrir en windev mobile 28.
    Il est préférable de ne pas utiliser windev mais bien windev mobile.
     
  • Ricardo Cassolatto

    Ricardo Cassolatto New Member

    Inscrit:
    Mar 27, 2021
    Messages:
    19
    J'aime reçus:
    0

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!

    , em erro dl
    Isso significa que o projeto Faith feito com a versão pirata do windev mobile
    Para poder abri-lo, você deve abrir o projeto no windev mobile 25, fazer um reparo e depois cobri-lo no windev mobile 28.
    É melhor não usar windev, mas windev mobile.
    Cliquez pour agrandir...

    Isto é o que estou fazendo, sozinho:

    [​IMG]
    [​IMG]


    [​IMG]
    importar android.widget.Toast;
    importar android.graphics.BitmapFactory;
    importar org.opencv.android.OpenCVLoader;
    importar org.opencv.android.Utils;
    importar android.widget.ImageView;
    importar android.graphics.Bitmap;
    importar android.os.Environment;
    import org.opencv.core.*;

    import org.opencv.core.MatOfRect;
    import org.opencv.core.Rect;
    import org.opencv.imgproc.Imgproc;
    import org.opencv.objdetect.CascadeClassifier;


    public static void DetectFaceOpenCv(String filePath)
    {
    OpenCVLoader.initDebug();
    ImageView imsrc = (ImageView) getView("IMG_Src");

    Bitmap capturadoImg = nulo;

    captureImg = BitmapFactory.decodeFile(filePath);
    Mat original = new Mat();
    Usos. bitmapToMat(capturedImg, src);

    CascadeClassifier faceDetector = new CascadeClassifier(Environment.getExternalStorageDirectory().toString()+"/lbpcascade_frontalface.xml");
    //gray img --> equalizar histograma --> entrada para o classificador
    Mat grayFrame = new Mat();
    Imgproc.cvtColor(src, grayFrame, Imgproc.COLOR_BGR2GRAY);
    Imgproc.equalizeHist(grayFrame, grayFrame);

    MatOfRect facesDetetadas = new MatOfRect();
    faceDetector.detectMultiScale(grayFrame, facesDetected); //as faces detectadas são retornadas em facesDetected

    for (Rect faces: facesDetected. toArray()) {
    imgproc.rectangle(
    src, // onde desenhar a caixa
    new Point(faces.x, faces.y), // canto inferior esquerdo
    new Point(faces.x + faces.width, faces.y + faces.height), // canto superior direito
    novo Escalar(0, 0, 255),
    3 // chifre RGB
    );
    }

    Utils.matToBitmap(src, captureImg);
    imsrc.setScaleType(ImageView.ScaleType.FIT_XY);
    imsrc.setImageBitmap(capturedImg);
    }


    Obrigado pela atenção!
     

    Fichiers attachés:

  • redha2010

    redha2010 Active Member

    Inscrit:
    Jan 25, 2018
    Messages:
    230
    J'aime reçus:
    226
    the lbpcascade_frontalface.xml file exist in your phone ?
    u have integreted the file but you must cheek if is existing in oyur device
     
  • Ricardo Cassolatto

    Ricardo Cassolatto New Member

    Inscrit:
    Mar 27, 2021
    Messages:
    19
    J'aime reçus:
    0
    I put it on the EXE directory on the project, then it was uploadede, let me check

    thanks
     
  • Ricardo Cassolatto

    Ricardo Cassolatto New Member

    Inscrit:
    Mar 27, 2021
    Messages:
    19
    J'aime reçus:
    0
    Hi there ! Again it´s me trying to fix this !

    I´m sending this:

    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Bonjour visiteur, Merci de vous Inscrire ou de vous connectez pour voir les liens!


    Where I´m commiting the error ?

    Merci in advance !
     
  • Partager cette page

    Chargement...