Потоковая передача с iDS на OpenCV - PullRequest
0 голосов
/ 22 марта 2019

Возможно ли взять изображения с камеры iDS и преобразовать их в распознаваемый формат OpenCV?

Я следовал коду для потоковых данных через rtsp:// из iDS:

/* allocate image buffer */
char *pMemoryBuffer;
int nMemoryId;
nRet = is_AllocImageMem(hCam, rectAoi.s32Width, rectAoi.s32Height, 24, &pMemoryBuffer, &nMemoryId);
abortOnError(nRet, "Allocating image memory failed with error code: ");

/* set allocated image buffer active */
nRet = is_SetImageMem(hCam, pMemoryBuffer, nMemoryId);
abortOnError(nRet, "Setting image memory active failed with error code: ");
/* capture a single frame */
nRet = is_FreezeVideo(hCam, IS_WAIT);

/* Step 4: Submit frame data to the stream */
IS_STREAM_PAYLOAD_DATA data;
data.cbSizeOfStruct = sizeof(IS_STREAM_PAYLOAD_DATA);
data.pData = reinterpret_cast<unsigned char*>(pMemoryBuffer);
data.cbSizeOfData = rectAoi.s32Width * rectAoi.s32Height * 3;
data.idSession = sessionInfo.idSession;
data.idStream = streamInfo.idStream;

Но мне нужно получить изображение OpenCV (IplImage / Mat) напрямую или изображение в любом другом известном формате.

1 Ответ

0 голосов
/ 25 марта 2019

ОК, так что это можно сделать через файловую систему:

memset(&ImageFileParams, 0, sizeof(ImageFileParams));
ImageFileParams.pwchFileName = myString;
ImageFileParams.pnImageID = NULL;
ImageFileParams.ppcImageMem = NULL;
ImageFileParams.nQuality = 0;

nRet = is_ImageFile(hCam, IS_IMAGE_FILE_CMD_SAVE, (void*)&ImageFileParams, sizeof(ImageFileParams));
...