| | |
| | | public class YoloWrapper : IDisposable |
| | | { |
| | | private const string YoloLibraryName = "yolo_cpp_dll.dll"; |
| | | private const int MaxObjects = 1000; |
| | | |
| | | [DllImport(YoloLibraryName, EntryPoint = "init")] |
| | | public static extern int InitializeYolo(string configurationFilename, string weightsFilename, int gpu); |
| | | private static extern int InitializeYolo(string configurationFilename, string weightsFilename, int gpu); |
| | | |
| | | [DllImport(YoloLibraryName, EntryPoint = "detect_image")] |
| | | public static extern int DetectImage(string filename, ref BboxContainer container); |
| | | private static extern int DetectImage(string filename, ref BboxContainer container); |
| | | |
| | | [DllImport(YoloLibraryName, EntryPoint = "detect_mat")] |
| | | public static extern int DetectImage(IntPtr pArray, int nSize, ref BboxContainer container); |
| | | private static extern int DetectImage(IntPtr pArray, int nSize, ref BboxContainer container); |
| | | |
| | | [DllImport(YoloLibraryName, EntryPoint = "dispose")] |
| | | public static extern int DisposeYolo(); |
| | | private static extern int DisposeYolo(); |
| | | |
| | | [StructLayout(LayoutKind.Sequential)] |
| | | public struct bbox_t |
| | |
| | | public UInt32 frames_counter; |
| | | }; |
| | | |
| | | [StructLayout(LayoutKind.Sequential, Size = 10)] |
| | | [StructLayout(LayoutKind.Sequential)] |
| | | public struct BboxContainer |
| | | { |
| | | [MarshalAs(UnmanagedType.ByValArray, SizeConst = 10)] |
| | | [MarshalAs(UnmanagedType.ByValArray, SizeConst = MaxObjects)] |
| | | public bbox_t[] candidates; |
| | | } |
| | | |
| | |
| | | { |
| | | // Copy the array to unmanaged memory. |
| | | Marshal.Copy(imageData, 0, pnt, imageData.Length); |
| | | DetectImage(pnt, imageData.Length, ref container); |
| | | var count = DetectImage(pnt, imageData.Length, ref container); |
| | | if (count == -1) |
| | | { |
| | | throw new NotSupportedException($"{YoloLibraryName} has no OpenCV support"); |
| | | } |
| | | } |
| | | catch (Exception exception) |
| | | { |