Hello,
• Hardware Platform: Jetson Xavier NX
• JetPack Version: 5.0.2
• DeepStream Version: 6.1.1
I have a custom low-level tracker library which requires a BGR cv:Mat
for the underlaying tracker frame processing.
Currently the query is:
NvMOTStatus NvMOT_Query(uint16_t customConfigFilePathSize, char *pCustomConfigFilePath, NvMOTQuery *pQuery)
{
pQuery->computeConfig = NVMOTCOMP_CPU;
pQuery->numTransforms = 1;
pQuery->colorFormats[0] = NVBUF_COLOR_FORMAT_RGBA;
pQuery->memType = NVBUF_MEM_SURFACE_ARRAY;
pQuery->batchMode = NvMOTBatchMode_NonBatch;
pQuery->supportPastFrame = false;
return NvMOTStatus_OK;
}
And frame processing:
NvMOTStatus NvMOTContext::processFrame(const NvMOTProcessParams *params, NvMOTTrackedObjBatch *trackedObjectsBatch)
{
NvMOTTrackedObjList *trackedObjList = &trackedObjectsBatch->list[0];
NvMOTFrame *frame = ¶ms->frameList[0];
NvBufSurfaceParams *bufferParams = frame->bufferList[0];
...
cv::Mat rbgaFrame(bufferParams->height, bufferParams->width, CV_8UC4, bufferParams->mappedAddr.addr[0], bufferParams->pitch);
cv::cvtColor(rbgaFrame, bgrFrame, cv::COLOR_RGBA2BGR);
...
Which works, but way too CPU intensive (mainly cv::cvtColor, for 1280x720 frames at 25fps).
Is there any other way to tackle this? Maybe with NVMOTCOMP_GPU
and somehow make the RGBA to BGR conversion on GPU?
Any help will be greatly appreciated. Thank you!