Захват изображения из IntPtr с использованием emgucv и hikvision SDK DLL C # WPF

Я пытаюсь получить изображение (или, по крайней мере, байтовый массив) с камеры HIKVision, используя свои собственные DLL (написано на C ++).
Мне удалось получить прямой эфир с камеры с задержкой ~ 170 мс. Для этого я поставил элемент управления WindowsFormsHost PictureBox.
Здесь вы можете увидеть мой импорт DLL.

    private const string DLL = @"32bit\HCNetSDK.dll";
[DllImport(DLL)]
public static extern bool NET_DVR_Init();

[DllImport(DLL)]
public static extern bool NET_DVR_SetConnectTime(int waitTime, int retries);

[DllImport(DLL)]
public static extern bool NET_DVR_SetReconnect(int interval, bool EnableReccon);

[DllImport(DLL, EntryPoint = "NET_DVR_Login_V40")]
public static extern int NET_DVR_Login_V40(ref Structs.NET_DVR_USER_LOGIN_INFO pLoginInfo, ref Structs.NET_DVR_DEVICEINFO_V40 lpDeviceInfo);

[DllImport(DLL)]
public static extern bool NET_DVR_Cleanup();

[DllImport(DLL)]
public static extern bool NET_DVR_Logout(int UserID);

[DllImport(DLL, EntryPoint = "NET_DVR_RealPlay_V40")]
public static extern int NET_DVR_RealPlay_V40(int lUserID, ref Structs.LPNET_DVR_PREVIEWINFO lpPreviewInfo, REALDATACALLBACK fRealDataCallBack_V30, IntPtr pUser);[DllImport(DLL)]
public static extern int NET_DVR_GetLastError();

[DllImport(DLL)]
public static extern bool NET_DVR_StopRealPlay(int lRealPlayHandle);

Вот мой код, чтобы получить прямой эфир:

Structs.LPNET_DVR_PREVIEWINFO PrevInfo = new Structs.LPNET_DVR_PREVIEWINFO();
PrevInfo.hPlayWnd = this.handler;
PrevInfo.lChannel = 1;
PrevInfo.dwStreamType = 0;  //0 - pirminis, 1 - antrinis
PrevInfo.dwLinkMode = 0;
PrevInfo.bBlocked = 1;
PrevInfo.byPreviewMode = 0;
PrevInfo.byStreamID = new byte[Defines.STREAM_ID_LEN];
PrevInfo.byRes = new byte[216];

SDKMethods.DataReceived = VideoCallback;

//PlayerID = SDKMethods.NET_DVR_RealPlay_V40(UserID, ref PrevInfo, null, IntPtr.Zero);
PlayerID = SDKMethods.NET_DVR_RealPlay_V40(UserID, ref PrevInfo,                      SDKMethods.DataReceived, IntPtr.Zero);
if (PlayerID < 0)
{
int errCode = SDKMethods.NET_DVR_GetLastError();
SDKMethods.NET_DVR_Logout(UserID);
SDKMethods.NET_DVR_Cleanup();
throw new Exception(errors.ErrorByCode(errCode));
}
return true;

this.handler; это IntPtr от этого объекта

<WindowsFormsHost Name="host1" Margin="55,143,41,28">
<winform:PictureBox x:Name="Pic"/>
</WindowsFormsHost>

когда я пытаюсь получить изображение прямо из картинки, я получаю только белый экран. Может быть, кто-нибудь может мне помочь, как получить изображение из обработчика PictureBox?

note // Я не могу использовать методы SDK для сохранения изображения на компьютере, потому что это занимает слишком много времени ..

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]