Home > Net >  C # call DLL by a third party (C) the data structure of conversion error
C # call DLL by a third party (C) the data structure of conversion error

Time:10-10

ARCSoft face recognition only c + + and JAVA version, lai himself not only c + +, want to invoke the c + + DLL in c #, so I need to convert the data structure, turned to face detection, is always an error (other information: trying to read or write protected memory, this usually indicates to other memory, damaged), don't know what's the matter, according to my judgment, should be the transformation MultiFaceInfo data structure definition, master, thank you very much!!!!!!

below for c + + interface description:
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
MRESULT ASFDetectFaces (
MHandle hEngine,
MInt32 width,
MInt32 height,
MInt32 format,
MUInt8 * imgData,
LPASF_MultiFaceInfo detectedFaces
);
Functional description functional description
Face detection
Parameter
HEngine [in] handle to engine
Width [in] image width, multiples of 4
Height [in] the picture height, YUYV/I420/NV21/NV12 format for 2 times; BGR24/GRAY/DEPTH_U16 format unlimited
The format [in] the color space format
ImgData [in] image data
DetectedFaces [out] to detect the human face information
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
Structure description:
Face more information
Definition:
Typedef struct {
MRECT * faceRect;//face box array
MInt32 * faceOrient;//array face Angle
MInt32 faceNum;//number of detected face
MInt32 * faceID;//in VIDEOVIDEO mode effectively, IMAGE mode is empty
} ASF_MultiFaceInfo, * LPASF_MultiFaceInfo;
==============================================================
as defined in the sample code below:
Typedef struct __tag_rect
{
MInt32 left;
MInt32 top;
MInt32 right;
MInt32 bottom;
} MRECT, * PMRECT;
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
//face information
Typedef struct {
MRECT * faceRect;//face frame information
MInt32 * faceOrient;//the Angle of the input image, you can reference ArcFaceCompare_OrientCode.
MInt32 faceNum;//number of detected face
MInt32 * faceID;//face ID, IMAGE mode does not return FaceID
} ASF_MultiFaceInfo, * LPASF_MultiFaceInfo;
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
ASF_MultiFaceInfo detectedFaces1={0};
IplImage * cutImg1=cvCreateImage (cvSize (img1 - & gt; Width - img1 - & gt; Width % 4, img1 - & gt; Height), IPL_DEPTH_8U img1 - & gt; NChannels);
CutIplImage (img1, cutImg1, 0, 0);
Res=ASFDetectFaces (handle, cutImg1 - & gt; Width, cutImg1 - & gt; Height, ASVL_PAF_RGB24_B8G8R8, (MUInt8 *) cutImg1 - & gt; ImageData, & amp; DetectedFaces1);
==============================================================
for c # code below, and as far as I can judge, should be the MultiFaceInfo data structure conversion,
///& lt; summary>
///face information
///& lt;/summary>
[StructLayoutAttribute (LayoutKind. Sequential CharSet=CharSet. Ansi, Pack=1)]
Public struct ASF_MultiFaceInfo
{
[MarshalAs (UnmanagedType ByValArray, SizeConst=10, ArraySubType=System. The Runtime. InteropServices. UnmanagedType. The Struct)]
Public MRECT [] faceRect;//face box array
[MarshalAs (UnmanagedType ByValArray, SizeConst=10, ArraySubType=System. The Runtime. InteropServices. UnmanagedType. I2)]
Public int [] faceOrient;//array face Angle
Public int faceNum;//number of detected face
[MarshalAs (UnmanagedType ByValArray, SizeConst=10, ArraySubType=System. The Runtime. InteropServices. UnmanagedType. I2)]
Public int [] faceID;//in VIDEOVIDEO mode effectively, IMAGEIMAGE mode is empty
}
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
[StructLayoutAttribute (LayoutKind. Sequential CharSet=CharSet. Ansi, Pack=1)]
Public struct MRECT
{
Public int left;
Public int top;
Public int right;
Public int bottom;
}
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
[System. The Runtime. InteropServices. DllImportAttribute (" libarcsoft_face_engine. DLL EntryPoint="ASFDetectFaces CallingConvention=CallingConvention. Cdecl)]
Public static extern int ASFDetectFaces (IntPtr hEngine, int width, int height, int format, IntPtr imgData, ref ASF_MultiFaceInfo detectedFaces);
-- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- -- --
ASF_MultiFaceInfo detectedFaces=new ASF_MultiFaceInfo ();
The resultCode=ASF_Functions. ASFDetectFaces (imgData hEngine, width, height, ASVL_PAF_RGB24_B8G8R8, ref detectedFaces);
--------------------------------------------------------------------------------------------------------
  •  Tags:  
  • C#
  • Related