Гистограмма OpenVX

Я пытаюсь использовать гистограмму OpenVX (согласно спецификации 1.1) и немного озадачен в части использования. Мое понимание таково (Пожалуйста, поправьте меня):

vx_size numBins = 10;
vx_uint32 offset = 10;
vx_uint32 range = 256;
// Create Object
vx_distribution vx_dist = vxCreateDistribution (Context, numBins, offset, 
range);

// Create Node
vx_status status = vxHistogramNode (context, img, vx_dist);

Spec говорит, что vxHistogramNode() принимает vx_distribution as [out]это значит vxHistogramNode() создает объект внутри? Если ответ "Да", то как мне передать numBins, Offset и диапазон по моему выбору?

Также. как я могу получить доступ к выводу результата гистограммы?

1 ответ

Решение

out означает, что узел запишет результат в предоставленный объект данных. Итак, вы передаете свой объект узлу, запускаете график и затем читаете результат:

// Create Object
vx_size numBins = 10;
vx_uint32 offset = 10;
vx_uint32 range = 256;
vx_distribution vx_dist = vxCreateDistribution (Context, numBins, offset, range);

vx_graph graph = vxCreateGraph(context);
vxHistogramNode(graph, img, vx_dist);
vxVerifyGraph(graph);

vxProcessGraph(graph);

// Read the data
vx_map_id map_id;
vx_int32 *ptr;
vxMapDistribution(vx_dist, &map_id, (void **)&ptr, VX_READ_ONLY, VX_MEMORY_TYPE_HOST, 0);
// use ptr, like ptr[0]
vxUnmapDistribution(vx_dist, map_id);
Другие вопросы по тегам