2017-07-27 27 views
0

我正在嘗試使用OpenVX直方圖(根據Spec 1.1),並且在使用部分中有點困惑。我的理解是這樣的(請指正):OpenVX直方圖

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); 

規範說​​需要vx_distribution as [out],並不意味着​​創建內部對象呢?如果答案是'是',那麼我將如何傳遞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); 
+0

感謝@ jet47通常,當我們創建成爲'輸入[中]'任何API,但任何對象,如果它是'輸入和輸出「,它們都是像'[in,out]一樣提到的,但是'vxHistogramNode()'是它唯一的'[out]',這讓我感到困惑。另一個問題,如果我想讀圖中的數據本身,所以我認爲我需要**客戶節點/內核**不是嗎? –

+0

是的,你可能會創建自己的用戶內核,它可以嵌入到圖形中,並且內置內核。 – jet47

+0

謝謝!感謝你的幫助。 –