Reconnaissance faciale
-
- Messages : 52
- Inscription : dim. 29/juin/2014 6:32
Reconnaissance faciale
Hello
Dans ce topic, je posterai progressivement des exemples, sur l'utilisation du SDK de Luxand
https://www.luxand.com/facesdk/
Dans ce topic, je posterai progressivement des exemples, sur l'utilisation du SDK de Luxand
https://www.luxand.com/facesdk/
-
- Messages : 52
- Inscription : dim. 29/juin/2014 6:32
Re: Reconnaissance faciale
Luxand FaceSDK 5.0 (125 MB) :
https://www.luxand.com/download/Luxand_ ... _Setup.exe
Code Evaluation :
https://www.luxand.com/facesdk/requestkey/
https://www.luxand.com/download/Luxand_ ... _Setup.exe
Code Evaluation :
https://www.luxand.com/facesdk/requestkey/
Code : Tout sélectionner
;Luxand_FSDK_APIS.pbl
facesdk.dll
;Initialization functions
FSDK_ActivateLibrary 1
FSDK_GetHardware_ID 1
FSDK_GetLicenseInfo 1
FSDK_SetNumThreads 1
FSDK_GetNumThreads 1
FSDK_Initialize 0
FSDK_Finalize 0
;Face detection functions
FSDK_DetectEyes 2
FSDK_DetectEyesInRegion 3
FSDK_DetectFace 2
FSDK_DetectMultipleFaces 4
FSDK_DetectFacialFeatures 2
FSDK_DetectFacialFeaturesInRegion 3
FSDK_DetectFacialFeaturesEx 3
FSDK_DetectFacialFeaturesInRegionEx 4
FSDK_SetFaceDetectionParameters 3
FSDK_SetFaceDetectionThreshold 1
;Image manipulation functions
FSDK_CreateEmptyImage 1
FSDK_LoadImageFromFile 2
FSDK_LoadImageFromBuffer 6
FSDK_LoadImageFromJpegBuffer 3
FSDK_LoadImageFromPngBuffer 3
FSDK_FreeImage 1
FSDK_SaveImageToFile 2
FSDK_LoadImageFromHBitmap 2
FSDK_SaveImageToHBitmap 2
FSDK_GetImageBufferSize 3
FSDK_SaveImageToBuffer 3
FSDK_SetJpegCompressionQuality 1
FSDK_CopyImage 2
FSDK_ResizeImage 3
FSDK_MirrorImage 2
FSDK_RotateImage90 3
FSDK_RotateImage 3
FSDK_RotateImageCenter 5
FSDK_CopyRect 6
FSDK_CopyRectReplicateBorder 6
FSDK_GetImageWidth 2
FSDK_GetImageHeight 2
FSDK_ExtractFaceImage 6
;Matching
FSDK_GetFaceTemplate 2
FSDK_GetFaceTemplateInRegion 3
FSDK_GetFaceTemplateUsingFeatures 3
FSDK_GetFaceTemplateUsingEyes 3
FSDK_MatchFaces 3
FSDK_GetMatchingThresholdAtFAR 2
FSDK_GetMatchingThresholdAtFRR 2
FSDK_GetDetectedFaceConfidence 1
;Webcam
FSDK_InitializeCapturing 0
FSDK_FinalizeCapturing 0
FSDK_SetCameraNaming 1
FSDK_GetCameraList 2
FSDK_GetCameraListEx 3
FSDK_GetVideoFormatList 3
FSDK_SetVideoFormat 2
FSDK_OpenVideoCamera 2
FSDK_CloseVideoCamera 1
FSDK_GrabFrame 2
FSDK_Paint 2
FSDK_OpenIPVideoCamera 6
FSDK_SetHTTPProxy 4
;Tracker
FSDK_CreateTracker 1
FSDK_FreeTracker 1
FSDK_ClearTracker 1
FSDK_SetTrackerParameter 3
FSDK_SetTrackerMultipleParameters 3
FSDK_GetTrackerParameter 4
FSDK_FeedFrame 6
FSDK_GetTrackerEyes 4
FSDK_GetTrackerFacialFeatures 4
FSDK_GetTrackerFacePosition 4
FSDK_LockID 2
FSDK_UnlockID 2
FSDK_GetName 4
FSDK_GetAllNames 4
FSDK_SetName 3
FSDK_GetIDReassignment 3
FSDK_GetSimilarIDCount 3
FSDK_GetSimilarIDList 4
FSDK_SaveTrackerMemoryToFile 2
FSDK_LoadTrackerMemoryFromFile 2
FSDK_GetTrackerMemoryBufferSize 2
FSDK_SaveTrackerMemoryToBuffer 3
FSDK_LoadTrackerMemoryFromBuffer 2
;Facial attributes
FSDK_GetTrackerFacialAttribute 6
FSDK_DetectFacialAttributeUsingFeatures 5
FSDK_GetValueConfidence 3
Code : Tout sélectionner
;Luxand_FSDKVB_APIS.pbl
facesdk-vb.dll
;Initialization functions
FSDKVB_ActivateLibrary 1
FSDKVB_GetHardware_ID 1
FSDKVB_GetLicenseInfo 1
FSDKVB_SetNumThreads 1
FSDKVB_GetNumThreads 1
FSDKVB_Initialize 0
FSDKVB_Finalize 0
;Face detection functions
FSDKVB_DetectEyes 2
FSDKVB_DetectEyesInRegion 3
FSDKVB_DetectFace 2
FSDKVB_DetectMultipleFaces 4
FSDKVB_DetectFacialFeatures 2
FSDKVB_DetectFacialFeaturesInRegion 3
FSDKVB_DetectFacialFeaturesEx 3
FSDKVB_DetectFacialFeaturesInRegionEx 4
FSDKVB_SetFaceDetectionParameters 3
FSDKVB_SetFaceDetectionThreshold 1
;Image manipulation functions
FSDKVB_CreateEmptyImage 1
FSDKVB_LoadImageFromFile 2
FSDKVB_LoadImageFromBuffer 6
FSDKVB_LoadImageFromJpegBuffer 3
FSDKVB_LoadImageFromPngBuffer 3
FSDKVB_FreeImage 1
FSDKVB_SaveImageToFile 2
FSDKVB_LoadImageFromHBitmap 2
FSDKVB_SaveImageToHBitmap 2
FSDKVB_GetImageBufferSize 3
FSDKVB_SaveImageToBuffer 3
FSDKVB_SetJpegCompressionQuality 1
FSDKVB_CopyImage 2
FSDKVB_ResizeImage 3
FSDKVB_MirrorImage 2
FSDKVB_RotateImage90 3
FSDKVB_RotateImage 3
FSDKVB_RotateImageCenter 5
FSDKVB_CopyRect 6
FSDKVB_CopyRectReplicateBorder 6
FSDKVB_GetImageWidth 2
FSDKVB_GetImageHeight 2
FSDKVB_ExtractFaceImage 6
;Matching
FSDKVB_GetFaceTemplate 2
FSDKVB_GetFaceTemplateInRegion 3
FSDKVB_GetFaceTemplateUsingFeatures 3
FSDKVB_GetFaceTemplateUsingEyes 3
FSDKVB_MatchFaces 3
FSDKVB_GetMatchingThresholdAtFAR 2
FSDKVB_GetMatchingThresholdAtFRR 2
FSDKVB_GetDetectedFaceConfidence 1
;Webcam
FSDKVB_InitializeCapturing 0
FSDKVB_FinalizeCapturing 0
FSDKVB_SetCameraNaming 1
FSDKVB_GetCameraList 2
FSDKVB_GetCameraListEx 3
FSDKVB_GetVideoFormatList 3
FSDKVB_SetVideoFormat 2
FSDKVB_OpenVideoCamera 2
FSDKVB_CloseVideoCamera 1
FSDKVB_GrabFrame 2
FSDKVB_Paint 2
FSDKVB_OpenIPVideoCamera 6
FSDKVB_SetHTTPProxy 4
;Tracker
FSDKVB_CreateTracker 1
FSDKVB_FreeTracker 1
FSDKVB_ClearTracker 1
FSDKVB_SetTrackerParameter 3
FSDKVB_SetTrackerMultipleParameters 3
FSDKVB_GetTrackerParameter 4
FSDKVB_FeedFrame 6
FSDKVB_GetTrackerEyes 4
FSDKVB_GetTrackerFacialFeatures 4
FSDKVB_GetTrackerFacePosition 4
FSDKVB_LockID 2
FSDKVB_UnlockID 2
FSDKVB_GetName 4
FSDKVB_GetAllNames 4
FSDKVB_SetName 3
FSDKVB_GetIDReassignment 3
FSDKVB_GetSimilarIDCount 3
FSDKVB_GetSimilarIDList 4
FSDKVB_SaveTrackerMemoryToFile 2
FSDKVB_LoadTrackerMemoryFromFile 2
FSDKVB_GetTrackerMemoryBufferSize 2
FSDKVB_SaveTrackerMemoryToBuffer 3
FSDKVB_LoadTrackerMemoryFromBuffer 2
;Facial attributes
FSDKVB_GetTrackerFacialAttribute 6
FSDKVB_DetectFacialAttributeUsingFeatures 5
FSDKVB_GetValueConfidence 3
Code : Tout sélectionner
;Luxand_FSDK_Const.pb
Enumeration
;Error codes
#FSDKE_OK = 0
#FSDKE_FAILED = -1
#FSDKE_NOT_ACTIVATED = -2
#FSDKE_OUT_OF_MEMORY = -3
#FSDKE_INVALID_ARGUMENT = -4
#FSDKE_IO_ERROR = -5
#FSDKE_IMAGE_TOO_SMALL = -6
#FSDKE_FACE_NOT_FOUND = -7
#FSDKE_INSUFFICIENT_BUFFER_SIZE = -8
#FSDKE_UNSUPPORTED_IMAGE_EXTENSION = -9
#FSDKE_CANNOT_OPEN_FILE = -10
#FSDKE_CANNOT_CREATE_FILE = -11
#FSDKE_BAD_FILE_FORMAT = -12
#FSDKE_FILE_NOT_FOUND = -13
#FSDKE_CONNECTION_CLOSED = -14
#FSDKE_CONNECTION_FAILED = -15
#FSDKE_IP_INIT_FAILED = -16
#FSDKE_NEED_SERVER_ACTIVATION = -17
#FSDKE_ID_NOT_FOUND = -18
#FSDKE_ATTRIBUTE_NOT_DETECTED = -19
#FSDKE_INSUFFICIENT_TRACKER_MEMORY_LIMIT = -20
#FSDKE_UNKNOWN_ATTRIBUTE = -21
#FSDKE_UNSUPPORTED_FILE_VERSION = -22
#FSDKE_SYNTAX_ERROR = -23
#FSDKE_PARAMETER_NOT_FOUND = -24
#FSDKE_INVALID_TEMPLATE = -25
#FSDKE_UNSUPPORTED_TEMPLATE_VERSION = -26
;Facial feature count
#FSDK_FACIAL_FEATURE_COUNT = 66
;Facial features
#FSDKP_LEFT_EYE = 0
#FSDKP_RIGHT_EYE = 1
#FSDKP_LEFT_EYE_INNER_CORNER = 24
#FSDKP_LEFT_EYE_OUTER_CORNER = 23
#FSDKP_LEFT_EYE_LOWER_LINE1 = 38
#FSDKP_LEFT_EYE_LOWER_LINE2 = 27
#FSDKP_LEFT_EYE_LOWER_LINE3 = 37
#FSDKP_LEFT_EYE_UPPER_LINE1 = 35
#FSDKP_LEFT_EYE_UPPER_LINE2 = 28
#FSDKP_LEFT_EYE_UPPER_LINE3 = 36
#FSDKP_LEFT_EYE_LEFT_IRIS_CORNER = 29
#FSDKP_LEFT_EYE_RIGHT_IRIS_CORNER = 30
#FSDKP_RIGHT_EYE_INNER_CORNER = 25
#FSDKP_RIGHT_EYE_OUTER_CORNER = 26
#FSDKP_RIGHT_EYE_LOWER_LINE1 = 41
#FSDKP_RIGHT_EYE_LOWER_LINE2 = 31
#FSDKP_RIGHT_EYE_LOWER_LINE3 = 42
#FSDKP_RIGHT_EYE_UPPER_LINE1 = 40
#FSDKP_RIGHT_EYE_UPPER_LINE2 = 32
#FSDKP_RIGHT_EYE_UPPER_LINE3 = 39
#FSDKP_RIGHT_EYE_LEFT_IRIS_CORNER = 33
#FSDKP_RIGHT_EYE_RIGHT_IRIS_CORNER = 34
#FSDKP_LEFT_EYEBROW_INNER_CORNER = 13
#FSDKP_LEFT_EYEBROW_MIDDLE = 16
#FSDKP_LEFT_EYEBROW_MIDDLE_LEFT = 18
#FSDKP_LEFT_EYEBROW_MIDDLE_RIGHT = 19
#FSDKP_LEFT_EYEBROW_OUTER_CORNER = 12
#FSDKP_RIGHT_EYEBROW_INNER_CORNER = 14
#FSDKP_RIGHT_EYEBROW_MIDDLE = 17
#FSDKP_RIGHT_EYEBROW_MIDDLE_LEFT = 20
#FSDKP_RIGHT_EYEBROW_MIDDLE_RIGHT = 21
#FSDKP_RIGHT_EYEBROW_OUTER_CORNER = 15
#FSDKP_NOSE_TIP = 2
#FSDKP_NOSE_BOTTOM = 49
#FSDKP_NOSE_BRIDGE = 22
#FSDKP_NOSE_LEFT_WING = 43
#FSDKP_NOSE_LEFT_WING_OUTER = 45
#FSDKP_NOSE_LEFT_WING_LOWER = 47
#FSDKP_NOSE_RIGHT_WING = 44
#FSDKP_NOSE_RIGHT_WING_OUTER = 46
#FSDKP_NOSE_RIGHT_WING_LOWER = 48
#FSDKP_MOUTH_RIGHT_CORNER = 3
#FSDKP_MOUTH_LEFT_CORNER = 4
#FSDKP_MOUTH_TOP = 54
#FSDKP_MOUTH_TOP_INNER = 61
#FSDKP_MOUTH_BOTTOM = 55
#FSDKP_MOUTH_BOTTOM_INNER = 64
#FSDKP_MOUTH_LEFT_TOP = 56
#FSDKP_MOUTH_LEFT_TOP_INNER = 60
#FSDKP_MOUTH_RIGHT_TOP = 57
#FSDKP_MOUTH_RIGHT_TOP_INNER = 62
#FSDKP_MOUTH_LEFT_BOTTOM = 58
#FSDKP_MOUTH_LEFT_BOTTOM_INNER = 63
#FSDKP_MOUTH_RIGHT_BOTTOM = 59
#FSDKP_MOUTH_RIGHT_BOTTOM_INNER = 65
#FSDKP_NASOLABIAL_FOLD_LEFT_UPPER = 50
#FSDKP_NASOLABIAL_FOLD_LEFT_LOWER = 52
#FSDKP_NASOLABIAL_FOLD_RIGHT_UPPER = 51
#FSDKP_NASOLABIAL_FOLD_RIGHT_LOWER = 53
#FSDKP_CHIN_BOTTOM = 11
#FSDKP_CHIN_LEFT = 9
#FSDKP_CHIN_RIGHT = 10
#FSDKP_FACE_CONTOUR1 = 7
#FSDKP_FACE_CONTOUR2 = 5
#FSDKP_FACE_CONTOUR12 = 6
#FSDKP_FACE_CONTOUR13 = 8
EndEnumeration
Structure FSDK_IMAGEMODE
FSDK_IMAGE_GRAYSCALE_8BIT.l
FSDK_IMAGE_COLOR_24BIT.l
FSDK_IMAGE_COLOR_32BIT.l
EndStructure
Structure FSDK_VIDEOCOMPRESSIONTYPE
FSDK_MJPEG.l
EndStructure
Structure FSDK_STRING
c_str.b[1024]
EndStructure
Structure TPoint
X.l
Y.l
EndStructure
Structure TFacePosition
xc.l
yc.l
w.l
blank_var_for_padding.l
angle.d
EndStructure
Structure FSDK_VideoFormatInfo ;Webcam
Width.l
Height.l
BPP.l
EndStructure
Dernière modification par CaptainCrunch le dim. 03/août/2014 1:43, modifié 3 fois.
Re: Reconnaissance faciale
Très, très cool ça. Je testerai dès que j'aurai l'occasion de passer sous Windows :3
-
- Messages : 52
- Inscription : dim. 29/juin/2014 6:32
Re: Reconnaissance faciale
Dernière modification par CaptainCrunch le dim. 03/août/2014 1:41, modifié 3 fois.
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Reconnaissance faciale
Précise que ton download fait 610 Mo
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
-
- Messages : 52
- Inscription : dim. 29/juin/2014 6:32
Re: Reconnaissance faciale
En fonction du langage de programmation, la dll ou l'appel est différent :
Delphi : passe directement par FaceSDK.dll
.NET : FaceSDK.NET.dll
VB : passe par FaceSDK-vb.dll puis FaceSDK.dll -> l'Horreur
J'ai testé directement depuis FaceSDK.dll
Je rencontre qq pbs avec les fonctions...
Essayé avec FaceSDK-vb.dll, alors la ca marche, mais c'est leeeeeeeeeeeeent ahhahaah vb powa lol
Capture d'écran :
http://hpics.li/e5e204c
Règles a respecter :
Delphi : passe directement par FaceSDK.dll
.NET : FaceSDK.NET.dll
VB : passe par FaceSDK-vb.dll puis FaceSDK.dll -> l'Horreur
J'ai testé directement depuis FaceSDK.dll
Je rencontre qq pbs avec les fonctions...
Essayé avec FaceSDK-vb.dll, alors la ca marche, mais c'est leeeeeeeeeeeeent ahhahaah vb powa lol
Code : Tout sélectionner
IncludeFile "Luxand_FSDK_Const.pb"
UseJPEGImageDecoder()
Enumeration
#mainFrm
#img1
#btnFaceDetect
EndEnumeration
Global Img_mainFrm_0.l
Img_mainFrm_0 = LoadImage(#PB_Any,"photo.jpg")
Global ff.TFacePosition
Global FaceCoords.TFacePosition
Global Dim FacialFeatures.TPoint(#FSDK_FACIAL_FEATURE_COUNT - 1)
FSDKvb_ActivateLibrary_("VotreCodeEvaluation") ; Activation de l'évaluation sinon Error
;FSDK_ActivateLibrary_
FSDKvb_Initialize_() ; Initialisation
;FSDK_Initialize_
Procedure ErrorShow(nbr.l)
Select nbr
Case 0
Debug "#FSDKE_OK"
Case -1
Debug "#FSDKE_FAILED"
Case -2
Debug "#FSDKE_NOT_ACTIVATED"
Case -3
Debug "#FSDKE_OUT_OF_MEMORY"
Case -4
Debug "#FSDKE_INVALID_ARGUMENT"
Case -5
Debug "#FSDKE_IO_ERROR"
Case -6
Debug "#FSDKE_IMAGE_TOO_SMALL"
Case -7
Debug "#FSDKE_FACE_NOT_FOUND"
Case -8
Debug "#FSDKE_INSUFFICIENT_BUFFER_SIZE"
Case -9
Debug "#FSDKE_UNSUPPORTED_IMAGE_EXTENSION"
Case -10
Debug "#FSDKE_CANNOT_OPEN_FILE"
Case -11
Debug "#FSDKE_CANNOT_CREATE_FILE"
Case -12
Debug "#FSDKE_BAD_FILE_FORMAT"
Case -13
Debug "#FSDKE_FILE_NOT_FOUND"
Case -14
Debug "#FSDKE_CONNECTION_CLOSED"
Case -15
Debug "#FSDKE_CONNECTION_FAILED"
Case -16
Debug "#FSDKE_IP_INIT_FAILED"
Case -17
Debug "#FSDKE_NEED_SERVER_ACTIVATION"
Case -18
Debug "#FSDKE_ID_NOT_FOUND"
Case -19
Debug "#FSDKE_ATTRIBUTE_NOT_DETECTED"
Case -20
Debug "#FSDKE_INSUFFICIENT_TRACKER_MEMORY_LIMIT"
Case -21
Debug "#FSDKE_UNKNOWN_ATTRIBUTE"
Case -22
Debug "#FSDKE_UNSUPPORTED_FILE_VERSION"
Case -23
Debug "#FSDKE_SYNTAX_ERROR"
Case -24
Debug "#FSDKE_PARAMETER_NOT_FOUND"
Case -25
Debug "#FSDKE_INVALID_TEMPLATE"
Case -26
Debug "#FSDKE_UNSUPPORTED_TEMPLATE_VERSION"
EndSelect
EndProcedure
Procedure mainFrmOpen()
OpenWindow(#mainFrm, x, y, 525, 400, "Facial Features - PB", #PB_Window_SystemMenu | #PB_Window_ScreenCentered | #PB_Window_WindowCentered)
ImageGadget(#img1, 10, 10, 180, 180, 0)
ButtonGadget(#btnFaceDetect,250, 350, 90, 40, "FaceDetect")
SetGadgetState(#img1,ImageID(Img_mainFrm_0))
EndProcedure
Procedure test(x.l,y.l,w.l)
Protected i.l,FaceX.l,FaceY.l
Img_mainFrm_0 = LoadImage(#PB_Any,"photo.jpg")
StartDrawing(ImageOutput(Img_mainFrm_0))
DrawingMode(#PB_2DDrawing_Outlined )
For i = 0 To #FSDK_FACIAL_FEATURE_COUNT - 1
FaceX = FacialFeatures(i)\x
FaceY = FacialFeatures(i)\y
If i > 1
Circle(faceX,faceY,2,RGB(0,0,255))
Else
Circle(faceX,faceY,2,0)
EndIf
Next
StopDrawing()
SetGadgetState(#img1,ImageID(Img_mainFrm_0))
EndProcedure
Procedure mainFrmEvent()
Protected glEvent.l, glGadget.l, glType.l, glWindow.l
Protected Ret.l, GG.l
Repeat
glEvent = WaitWindowEvent()
glGadget = EventGadget()
glType = EventType()
glWindow = EventWindow()
If glwindow = mainFrm
If glEvent = #PB_Event_Gadget
Select glGadget
Case #btnFaceDetect
If glType = #PB_EventType_LeftClick
ret= FSDKvb_LoadImageFromFile_(Img_mainFrm_0, "photo.jpg")
;ret= FSDK_LoadImageFromFile_
ErrorShow(ret)
If ret <> #FSDKE_OK
MessageRequester("","Error loading file",#PB_MessageRequester_Ok)
Else
gg = ImageID(Img_mainFrm_0)
ret =FSDKvb_DetectFace_(gg,ff)
;ret =FSDK_DetectFace_(gg,ff)
ErrorShow(ret)
ret =FSDKVB_DetectFacialFeatures_(gg, FacialFeatures(0))
;ret =FSDK_DetectFacialFeatures_
ErrorShow(ret)
With ff
test(\xc,\yc.l,\w)
EndWith
FSDKvb_Finalize_()
EndIf
EndIf
EndSelect
EndIf
EndIf
Until glEvent = #PB_Event_CloseWindow
End
EndProcedure
mainFrmOpen()
mainFrmEvent()
http://hpics.li/e5e204c
Règles a respecter :
Code : Tout sélectionner
;FSDK_ActivateLibrary_("Code Eval")
;FSDK_Initialize_()
;Fonctions SDK
;FSDK_Finalize_()
-
- Messages : 52
- Inscription : dim. 29/juin/2014 6:32
Re: Reconnaissance faciale
Bon ca avance
Je passe directement par FaceSDK.dll maintenant c'est quand meme plus rapide
Je passe directement par FaceSDK.dll maintenant c'est quand meme plus rapide
Re: Reconnaissance faciale
Excellent
Re: Reconnaissance faciale
j'ai pas encore testé , mais ....
j'ai deja vu le Cas pour la synthèse Vocal ,Reconnaissance vocal
il faut installer un contexte pour la mise en oeuvre ...
(installation du moteur de synthese vocal , des Voix pour la synthese..etc... )
ce qui signifie qu'on ne peux pas coder un programme, car la plupart des gens n'ont pas ce contexte d'installé ...
donc mettre par exemple de la synthèse vocal dans un prg n'a pas de fondement, puisque au final, quasi personne ne peux en profiter
(a part les Anglais qui disposent par defaut d'une synthese vocal installé a leur langue )
je me demandais si pour la reconnaissance facial, c'etait pareil ... ?
si je code un prg qui utilise cette Dll , si je fourni cette dll avec mon code, ça suffira ? (et qu'en est t'il des droits de diffusion )
ou bien faut t'il en plus installer un contexte particulier en plus de cette Dll ? ( installation d'un moteur particulier dans le Systeme )
parce que je trouve tres frustrant d'avoir des possibilités de la sorte , et d’être finalement empêché de les utiliser
parce que tout le monde n'aura pas installé ce contexte sur son ordinateur ...
je veux dire , on peut coder un programme utilisant une imprimante, un Scanner (Twain) , quelque soit le Driver installé , ça va marcher
car windows est prévu pour , éventuellement un Driver ou une Dll point barre, a la base , donc tout le monde a chez lui le contexte qui permet l'emploi de fonctions d'impression
mais pour la reconnaissance Facial .... ?
si c'est aussi galère que pour la synthèse, (installation d'un moteur (Sapi4 ou 5) + une voix ) , ....ç'est bien dommage
beaucoup de gens n'aiment ou ne savent pas comment installer un contexte avant utilisation d'un prg ..
le reve aurai été que nos systèmes d'exploitation soient fournis avec tout les moteurs
qu'il n'y ait que des dll a fournir, et ça roule
j'ai deja vu le Cas pour la synthèse Vocal ,Reconnaissance vocal
il faut installer un contexte pour la mise en oeuvre ...
(installation du moteur de synthese vocal , des Voix pour la synthese..etc... )
ce qui signifie qu'on ne peux pas coder un programme, car la plupart des gens n'ont pas ce contexte d'installé ...
donc mettre par exemple de la synthèse vocal dans un prg n'a pas de fondement, puisque au final, quasi personne ne peux en profiter
(a part les Anglais qui disposent par defaut d'une synthese vocal installé a leur langue )
je me demandais si pour la reconnaissance facial, c'etait pareil ... ?
si je code un prg qui utilise cette Dll , si je fourni cette dll avec mon code, ça suffira ? (et qu'en est t'il des droits de diffusion )
ou bien faut t'il en plus installer un contexte particulier en plus de cette Dll ? ( installation d'un moteur particulier dans le Systeme )
parce que je trouve tres frustrant d'avoir des possibilités de la sorte , et d’être finalement empêché de les utiliser
parce que tout le monde n'aura pas installé ce contexte sur son ordinateur ...
je veux dire , on peut coder un programme utilisant une imprimante, un Scanner (Twain) , quelque soit le Driver installé , ça va marcher
car windows est prévu pour , éventuellement un Driver ou une Dll point barre, a la base , donc tout le monde a chez lui le contexte qui permet l'emploi de fonctions d'impression
mais pour la reconnaissance Facial .... ?
si c'est aussi galère que pour la synthèse, (installation d'un moteur (Sapi4 ou 5) + une voix ) , ....ç'est bien dommage
beaucoup de gens n'aiment ou ne savent pas comment installer un contexte avant utilisation d'un prg ..
le reve aurai été que nos systèmes d'exploitation soient fournis avec tout les moteurs
qu'il n'y ait que des dll a fournir, et ça roule
-
- Messages : 52
- Inscription : dim. 29/juin/2014 6:32
Re: Reconnaissance faciale
lu dobro
The following files may be redistributed with your application:
Windows
bin\win32\facesdk.dll (for 32-bit systems)
bin\win64\facesdk.dll (for 64-bit systems)
bin\win32\facesdk.NET.dll (for 32-bit .NET applications)
bin\win64\facesdk.NET.dll (for 64-bit .NET applications)
bin\win32\FaceSDK-VB.dll (for Visual Basic 6.0 applications)
Linux
bin\linux_x86\libfsdk.so (for 32-bit systems)
bin\linux_x86_64\libfsdk.so (for 64-bit systems)
Mac OS X
bin\osx_x86_64\libfsdk.dylib (for 64-bit systems)
The following files may be redistributed with your application:
Windows
bin\win32\facesdk.dll (for 32-bit systems)
bin\win64\facesdk.dll (for 64-bit systems)
bin\win32\facesdk.NET.dll (for 32-bit .NET applications)
bin\win64\facesdk.NET.dll (for 64-bit .NET applications)
bin\win32\FaceSDK-VB.dll (for Visual Basic 6.0 applications)
Linux
bin\linux_x86\libfsdk.so (for 32-bit systems)
bin\linux_x86_64\libfsdk.so (for 64-bit systems)
Mac OS X
bin\osx_x86_64\libfsdk.dylib (for 64-bit systems)
Re: Reconnaissance faciale
ha .. bah effectivement, s'il n'y a que une ou deux lib a fournir
du coup , ton travail est tres tres interressant
voir s'il s'agit d'une Lib Opensource , car Fred pourrai alors l’intégrer dans PureBasic
du coup , ton travail est tres tres interressant
voir s'il s'agit d'une Lib Opensource , car Fred pourrai alors l’intégrer dans PureBasic
- falsam
- Messages : 7244
- Inscription : dim. 22/août/2010 15:24
- Localisation : IDF (Yvelines)
- Contact :
Re: Reconnaissance faciale
C'est une lib commerciale. Le coût est variable en fonction du projet que tu souhaites exécuter.Dobro a écrit :voir s'il s'agit d'une Lib Opensource , car Fred pourrai alors l’intégrer dans PureBasic
la FAQ (Question 2) sur ce lien https://www.luxand.com/facesdk/faq.php
@CaptainCrunch : Aprés avoir demander une clé d'évaluation que j'ai reçu en quelques secondes, j'ai voulu tester ton code mais il manque les déclarations de l'api correspondant aux dll de luxand. Exemple: FSDKvb_ActivateLibrary_()
Dernière modification par falsam le dim. 03/août/2014 11:26, modifié 1 fois.
Configuration : Windows 11 Famille 64-bit - PB 6.03 x64 - AMD Ryzen 7 - 16 GO RAM
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Vidéo NVIDIA GeForce GTX 1650 Ti - Résolution 1920x1080 - Mise à l'échelle 125%
Re: Reconnaissance faciale
Peut etre que OpenCV propose ce genre de chose en open source
Re: Reconnaissance faciale
Probablement, je viens de tester les exemples de JHPJHP
http://forums.purebasic.com/english/vie ... bc14fec234
et deja on peut diriger une balle, ou détourer le Visage avec un Cercle 2D , la detection de mouvement est parfaite .. etc ...
pas mal ce OpenCV , et impressionnant
http://forums.purebasic.com/english/vie ... bc14fec234
et deja on peut diriger une balle, ou détourer le Visage avec un Cercle 2D , la detection de mouvement est parfaite .. etc ...
pas mal ce OpenCV , et impressionnant
-
- Messages : 52
- Inscription : dim. 29/juin/2014 6:32
Re: Reconnaissance faciale
@falsam :
Réponse tardive... j'avais pas vu
Bonjour falsam, il te manque quoi ? les déclarations ?
Je passe directement par facesdk.dll maintenant c'est plus rapide, et j'utilise les prototypes.
@Dobro :
Effectivement, il existe un OpenCv : http://docs.opencv.org/trunk/modules/co ... c_api.html
Exemple :
Capture d'écran :
http://hpics.li/00a114b
Exemple avec FSDK_DetectMultipleFaces :
http://hpics.li/fcad455
FaceSDK n'est pas parfait, mais il est léger... Je regarde les SDK de NeuroTechnologie
c'est du lourd
http://www.neurotechnology.com
Réponse tardive... j'avais pas vu
Bonjour falsam, il te manque quoi ? les déclarations ?
Je passe directement par facesdk.dll maintenant c'est plus rapide, et j'utilise les prototypes.
@Dobro :
Effectivement, il existe un OpenCv : http://docs.opencv.org/trunk/modules/co ... c_api.html
Exemple :
Code : Tout sélectionner
; Utilisation directe de faceSDK.dll
; Désactiver l'unicode pour la compilation
UseJPEGImageDecoder()
UseJPEGImageEncoder()
Enumeration
;{ State Code
#FSDKE_OK = 0
#FSDKE_FAILED = -1
#FSDKE_NOT_ACTIVATED = -2
#FSDKE_OUT_OF_MEMORY = -3
#FSDKE_INVALID_ARGUMENT = -4
#FSDKE_IO_ERROR = -5
#FSDKE_IMAGE_TOO_SMALL = -6
#FSDKE_FACE_NOT_FOUND = -7
#FSDKE_INSUFFICIENT_BUFFER_SIZE = -8
#FSDKE_UNSUPPORTED_IMAGE_EXTENSION = -9
#FSDKE_CANNOT_OPEN_FILE = -10
#FSDKE_CANNOT_CREATE_FILE = -11
#FSDKE_BAD_FILE_FORMAT = -12
#FSDKE_FILE_NOT_FOUND = -13
#FSDKE_CONNECTION_CLOSED = -14
#FSDKE_CONNECTION_FAILED = -15
#FSDKE_IP_INIT_FAILED = -16
#FSDKE_NEED_SERVER_ACTIVATION = -17
#FSDKE_ID_NOT_FOUND = -18
#FSDKE_ATTRIBUTE_NOT_DETECTED = -19
#FSDKE_INSUFFICIENT_TRACKER_MEMORY_LIMIT = -20
#FSDKE_UNKNOWN_ATTRIBUTE = -21
#FSDKE_UNSUPPORTED_FILE_VERSION = -22
#FSDKE_SYNTAX_ERROR = -23
#FSDKE_PARAMETER_NOT_FOUND = -24
#FSDKE_INVALID_TEMPLATE = -25
#FSDKE_UNSUPPORTED_TEMPLATE_VERSION = -26
;}
;{ Facial
#FSDK_FACIAL_FEATURE_COUNT = 66
#FSDKP_LEFT_EYE = 0
#FSDKP_RIGHT_EYE = 1
#FSDKP_LEFT_EYE_INNER_CORNER = 24
#FSDKP_LEFT_EYE_OUTER_CORNER = 23
#FSDKP_LEFT_EYE_LOWER_LINE1 = 38
#FSDKP_LEFT_EYE_LOWER_LINE2 = 27
#FSDKP_LEFT_EYE_LOWER_LINE3 = 37
#FSDKP_LEFT_EYE_UPPER_LINE1 = 35
#FSDKP_LEFT_EYE_UPPER_LINE2 = 28
#FSDKP_LEFT_EYE_UPPER_LINE3 = 36
#FSDKP_LEFT_EYE_LEFT_IRIS_CORNER = 29
#FSDKP_LEFT_EYE_RIGHT_IRIS_CORNER = 30
#FSDKP_RIGHT_EYE_INNER_CORNER = 25
#FSDKP_RIGHT_EYE_OUTER_CORNER = 26
#FSDKP_RIGHT_EYE_LOWER_LINE1 = 41
#FSDKP_RIGHT_EYE_LOWER_LINE2 = 31
#FSDKP_RIGHT_EYE_LOWER_LINE3 = 42
#FSDKP_RIGHT_EYE_UPPER_LINE1 = 40
#FSDKP_RIGHT_EYE_UPPER_LINE2 = 32
#FSDKP_RIGHT_EYE_UPPER_LINE3 = 39
#FSDKP_RIGHT_EYE_LEFT_IRIS_CORNER = 33
#FSDKP_RIGHT_EYE_RIGHT_IRIS_CORNER = 34
#FSDKP_LEFT_EYEBROW_INNER_CORNER = 13
#FSDKP_LEFT_EYEBROW_MIDDLE = 16
#FSDKP_LEFT_EYEBROW_MIDDLE_LEFT = 18
#FSDKP_LEFT_EYEBROW_MIDDLE_RIGHT = 19
#FSDKP_LEFT_EYEBROW_OUTER_CORNER = 12
#FSDKP_RIGHT_EYEBROW_INNER_CORNER = 14
#FSDKP_RIGHT_EYEBROW_MIDDLE = 17
#FSDKP_RIGHT_EYEBROW_MIDDLE_LEFT = 20
#FSDKP_RIGHT_EYEBROW_MIDDLE_RIGHT = 21
#FSDKP_RIGHT_EYEBROW_OUTER_CORNER = 15
#FSDKP_NOSE_TIP = 2
#FSDKP_NOSE_BOTTOM = 49
#FSDKP_NOSE_BRIDGE = 22
#FSDKP_NOSE_LEFT_WING = 43
#FSDKP_NOSE_LEFT_WING_OUTER = 45
#FSDKP_NOSE_LEFT_WING_LOWER = 47
#FSDKP_NOSE_RIGHT_WING = 44
#FSDKP_NOSE_RIGHT_WING_OUTER = 46
#FSDKP_NOSE_RIGHT_WING_LOWER = 48
#FSDKP_MOUTH_RIGHT_CORNER = 3
#FSDKP_MOUTH_LEFT_CORNER = 4
#FSDKP_MOUTH_TOP = 54
#FSDKP_MOUTH_TOP_INNER = 61
#FSDKP_MOUTH_BOTTOM = 55
#FSDKP_MOUTH_BOTTOM_INNER = 64
#FSDKP_MOUTH_LEFT_TOP = 56
#FSDKP_MOUTH_LEFT_TOP_INNER = 60
#FSDKP_MOUTH_RIGHT_TOP = 57
#FSDKP_MOUTH_RIGHT_TOP_INNER = 62
#FSDKP_MOUTH_LEFT_BOTTOM = 58
#FSDKP_MOUTH_LEFT_BOTTOM_INNER = 63
#FSDKP_MOUTH_RIGHT_BOTTOM = 59
#FSDKP_MOUTH_RIGHT_BOTTOM_INNER = 65
#FSDKP_NASOLABIAL_FOLD_LEFT_UPPER = 50
#FSDKP_NASOLABIAL_FOLD_LEFT_LOWER = 52
#FSDKP_NASOLABIAL_FOLD_RIGHT_UPPER = 51
#FSDKP_NASOLABIAL_FOLD_RIGHT_LOWER = 53
#FSDKP_CHIN_BOTTOM = 11
#FSDKP_CHIN_LEFT = 9
#FSDKP_CHIN_RIGHT = 10
#FSDKP_FACE_CONTOUR1 = 7
#FSDKP_FACE_CONTOUR2 = 5
#FSDKP_FACE_CONTOUR12 = 6
#FSDKP_FACE_CONTOUR13 = 8
;}
EndEnumeration
Structure TPoint
X.l
Y.l
EndStructure
Global Dim FacialFeatures.TPoint(#FSDK_FACIAL_FEATURE_COUNT - 1)
Global Dim FaceTemplate.l(14326)
Global left.l, top.l, right.l, bottom.l
Global img.l, pt.l
Structure TFacePosition
xc.l
yc.l
w.l
blank_var_for_padding.l
angle.d
EndStructure
Global FacePos.TFacePosition
Procedure ErrorShow(nbr.l)
Select nbr
Case 0
PrintN( "#FSDKE_OK")
Case -1
PrintN( "#FSDKE_FAILED")
Case -2
PrintN( "#FSDKE_NOT_ACTIVATED" )
Case -3
PrintN( "#FSDKE_OUT_OF_MEMORY")
Case -4
PrintN( "#FSDKE_INVALID_ARGUMENT")
Case -5
PrintN( "#FSDKE_IO_ERROR")
Case -6
PrintN( "#FSDKE_IMAGE_TOO_SMALL")
Case -7
PrintN( "#FSDKE_FACE_NOT_FOUND")
Case -8
PrintN( "#FSDKE_INSUFFICIENT_BUFFER_SIZE")
Case -9
PrintN( "#FSDKE_UNSUPPORTED_IMAGE_EXTENSION")
Case -10
PrintN( "#FSDKE_CANNOT_OPEN_FILE")
Case -11
PrintN( "#FSDKE_CANNOT_CREATE_FILE")
Case -12
PrintN( "#FSDKE_BAD_FILE_FORMAT")
Case -13
PrintN( "#FSDKE_FILE_NOT_FOUND")
Case -14
PrintN( "#FSDKE_CONNECTION_CLOSED")
Case -15
PrintN( "#FSDKE_CONNECTION_FAILED")
Case -16
PrintN( "#FSDKE_IP_INIT_FAILED")
Case -17
PrintN( "#FSDKE_NEED_SERVER_ACTIVATION")
Case -18
PrintN( "#FSDKE_ID_NOT_FOUND")
Case -19
PrintN( "#FSDKE_ATTRIBUTE_NOT_DETECTED")
Case -20
PrintN( "#FSDKE_INSUFFICIENT_TRACKER_MEMORY_LIMIT")
Case -21
PrintN( "#FSDKE_UNKNOWN_ATTRIBUTE")
Case -22
PrintN( "#FSDKE_UNSUPPORTED_FILE_VERSION")
Case -23
PrintN( "#FSDKE_SYNTAX_ERROR")
Case -24
PrintN( "#FSDKE_PARAMETER_NOT_FOUND")
Case -25
PrintN( "#FSDKE_INVALID_TEMPLATE")
Case -26
PrintN( "#FSDKE_UNSUPPORTED_TEMPLATE_VERSION")
EndSelect
EndProcedure
;{ Proto
PrototypeC.i apiActivation(License.s)
PrototypeC.i apiInitialize()
PrototypeC.i apiFinalize()
PrototypeC.i apiLoadImageFromFile(pt.l,Pic.p-ascii)
PrototypeC.i apiSetNumThreads(nbr.i)
PrototypeC.i apiSetFaceDetectionThreshold(nb.l)
PrototypeC.i apiSetFaceDetectionParameters(n1.l,n2.l,n3.l)
PrototypeC.i apiDetectFace(ImgPt.l, FaceStrucPt.l)
PrototypeC.i apiDetectFacialFeatures(ImgPt.l,Features.l)
PrototypeC.i apiDetectFacialFeaturesInRegion(ImgPt.l,FacePos.l,Features.l)
;PrototypeC.i apiGetFaceTemplateUsingFeatures(ImgPt.l,Features.l, FaceTemplace.l) FaceTemplate ne passe pas
;}
Define License.s, MaPhoto.s
Define Ret.l,RetLib.l
OpenConsole()
ConsoleTitle("")
EnableGraphicalConsole(1)
ConsoleLocate(0,0)
ConsoleCursor(0)
RetLib = OpenLibrary(#PB_Any,"facesdk.dll")
If RetLib > 0
;*********************************************************************************************
; Activation du sdk, sinon ca ne marche pas :-)
License = "vkIBi3SM4fZRjqI1CoC1y28Sfs1fyWqU6/sgRw03DMe577rtAMy8GZ0FDKKYeThSN84uOEdW7X5OoKXTE7+QmrFc0w3AbTFQR9i9BgsBxWhHJ8hS5W/JtxmRT5Qp7ag0z64+1S6mXcbA2sydphIz/gbXjEXS05ABFaGsrC7DATI="
Activation.apiActivation = GetFunction(RetLib,"FSDK_ActivateLibrary")
ret = activation(license)
ErrorShow(ret)
;*********************************************************************************************
; Initialisation
Initialize.apiInitialize = GetFunction(RetLib,"FSDK_Initialize")
ret=Initialize()
ErrorShow(ret)
;*********************************************************************************************
; Nombre de threads
SetNumthreads.apiSetNumThreads = GetFunction(RetLib,"FSDK_SetNumThreads")
Ret=SetNumthreads(2)
ErrorShow(ret)
;*********************************************************************************************
; Chargement de la photo via Fichier JPG
MaPhoto = "c:\PhotoDeSylvester.jpg" ; Une photo... avec 1 visage, 1 !
LoadImageFromFile.apiLoadImageFromFile= GetFunction(RetLib,"FSDK_LoadImageFromFile")
Ret = LoadImageFromFile(@pt,MaPhoto)
ErrorShow(ret)
;*********************************************************************************************
;Sets a threshold value For face detection. The Default value is 5. The lowest possible value is 1
;The function allows adjusting the sensitivity of the detection. If the threshold value is set To a higher value,
;the detector will only recognize faces With sharp, clearly defined details, thus reducing the number of false positive detections.
;Setting the threshold lower allows detecting more faces With less clearly defined features at the expense of increased number
;of false positives.
SetFaceDetectionThreshold.apiSetFaceDetectionThreshold= GetFunction(RetLib,"FSDK_SetFaceDetectionThreshold")
Ret = SetFaceDetectionThreshold(4)
ErrorShow(ret)
;*********************************************************************************************
;Param1 = TRUE : extended in-plane rotation support is enabled at the cost of detection speed (3 times performance hit).
; FALSE : Default fast detection -15..15 degrees.
;Param2 = TRUE : detects in-plane rotation angle when detecting faces. The angle is recorded into the Angle field of the TFacePosition Structure
; FALSE : disables the detection of rotation angle.
;Param3 = Controls the detection speed by setting the size of the image the detection functions will work with.
; Choose higher value To increase detection quality, Or lower value To improve the performance.
; Note: By Default, all images are internally resized To the width of 384 pixels
SetFaceDetectionParameters.apiSetFaceDetectionParameters= GetFunction(RetLib,"FSDK_SetFaceDetectionParameters")
Ret = SetFaceDetectionParameters(1,1,400)
ErrorShow(ret)
;*********************************************************************************************
; Détection d'1 visage , si + voir la fonction FSDK_DetectMultipleFaces : marche bien aussi
DetectFace.apiDetectFace= GetFunction(RetLib,"FSDK_DetectFace")
Ret = DetectFace(pt, FacePos)
ErrorShow(ret)
Select ret
Case #FSDKE_OK ; Si visage découvert...
; Récupération des traits caractéristiques (66 points !) en fonction de la zone du visage (plus rapide que la photo entière)
; Plus fiable que la position des yeux
DetectFacialFeaturesInRegion.apiDetectFacialFeaturesInRegion= GetFunction(RetLib,"FSDK_DetectFacialFeaturesInRegion")
RET =DetectFacialFeaturesInRegion(pt, @FacePos,@FacialFeatures())
ErrorShow(ret)
;*********************************************************************************************
;Création du template du visage pour un FaceMatching
;Je n'arrive pas à passer le template via le proto ( FSDK_GetFaceTemplateUsingFeatures 3 )
ret = FSDK_GetFaceTemplateUsingFeatures_(pt,@FacialFeatures(),@FaceTemplate())
ErrorShow(ret)
EndSelect
Finalize.apiFinalize = GetFunction(RetLib,"FSDK_Finalize")
Ret=Finalize()
ErrorShow(ret)
CloseLibrary(RetLib)
Else
MessageRequester("Erreur","erreur d'ouverture de la lib",#PB_MessageRequester_Ok)
End
EndIf
;***********************************************************************
img = LoadImage(#PB_Any,MaPhoto)
OpenWindow(1, 10, 10, 780, 610, "", #PB_Window_SystemMenu)
StartDrawing(ImageOutput(img))
DrawingMode(#PB_2DDrawing_Outlined )
;******** Carré du visage *********************************************
; Coordonnées du visage
With FacePos
left = \xc - Round(\w*0.6,#PB_Round_Down)
top = \yc - Round(\w*0.5,#PB_Round_Down)
right = \xc + Round(\w*0.6,#PB_Round_Down)
bottom = \yc + Round(\w*0.7,#PB_Round_Down)
EndWith
Box(left,top,right-left,bottom-top,RGB(0,0,255))
;******** Cercles Caractéristiques du visage *****************************
Define i.l,FaceX.l,FaceY.l
For i = 0 To #FSDK_FACIAL_FEATURE_COUNT - 1
FaceX = FacialFeatures(i)\x
FaceY = FacialFeatures(i)\y
If i > 1
Circle(faceX,faceY,2,RGB(0,0,255))
; Else
Circle(faceX,faceY,2,RGB(0,0,255))
EndIf
Next
;************************************************************************
StopDrawing()
ImageGadget(2, 110, 20, 510, 500, ImageID(img))
;**************************************************************************
Define glEvent.l, glGadget.l, glType.l, glWindow.l
Repeat
glEvent = WaitWindowEvent()
glGadget = EventGadget()
glType = EventType()
glWindow = EventWindow()
If glwindow = frm
If glEvent = #PB_Event_Gadget
Select glGadget
EndSelect
EndIf
EndIf
Until glEvent = #PB_Event_CloseWindow
CloseConsole()
End
http://hpics.li/00a114b
Exemple avec FSDK_DetectMultipleFaces :
http://hpics.li/fcad455
FaceSDK n'est pas parfait, mais il est léger... Je regarde les SDK de NeuroTechnologie
c'est du lourd
http://www.neurotechnology.com