Hello,
I’m unable to create and fill in arrays for the nvxuFindHomography() call. the
vxQueryArray(srcPoints, VX_ARRAY_ATTRIBUTE_NUMITEMS, &num_items, sizeof(num_items));
is returning 0 and the vxAccessArrayRange() call is returning
[NVX LOG] vxAccessArrayRange: invalid range
Here’s the code:
vx_size capacity = 4;
vx_array srcPoints = vxCreateArray (*context_, VX_TYPE_KEYPOINT, capacity);
NVXIO_CHECK_REFERENCE(srcPoints);
vx_array dstPoints = vxCreateArray (*context_, VX_TYPE_KEYPOINT, capacity);
NVXIO_CHECK_REFERENCE(dstPoints);
vx_array inliers = vxCreateArray (*context_, VX_TYPE_UINT8, capacity);
NVXIO_CHECK_REFERENCE(inliers);
vx_status status = vxGetStatus((vx_reference)srcPoints);
if (status != VX_SUCCESS)
printf ("failed to create srcPoints %d\n", status);
printf ("created arrays with capacity %d\n", (int) capacity);
vx_size stride = 0; //sizeof(vx_keypoint_t);
void *base = NULL;
vx_size num_items = 0;
vxQueryArray(srcPoints, VX_ARRAY_ATTRIBUTE_NUMITEMS, &num_items, sizeof(num_items));
printf ("accessing src Points %d\n", (int)num_items);
// fill in source points
NVXIO_SAFE_CALL(vxAccessArrayRange(srcPoints, 0, 3, &stride, &base, VX_READ_AND_WRITE));
for (int idx = 0; idx < 3; idx++)
{
vxArrayItem(vx_keypoint_t, base, idx, stride).x = src_points[idx*2];
vxArrayItem(vx_keypoint_t, base, idx, stride).y = src_points[idx*2 + 1];
}
vxCommitArrayRange(srcPoints, 0, 3, base);
// fill in dst points
stride = 0;sizeof(vx_keypoint_t);
base = NULL;
vxAccessArrayRange(dstPoints, 0, 3, &stride, &base, VX_READ_AND_WRITE);
printf ("accessing dst Points\n");
for (int idx = 0; idx < 4; idx++)
{
vxArrayItem(vx_keypoint_t, base, idx, stride).x = dst_points[idx*2];
vxArrayItem(vx_keypoint_t, base, idx, stride).y = dst_points[idx*2 + 1];
}
vxCommitArrayRange(srcPoints, 0, 3, base);
printf ("finding homography\n");
nvxuFindHomography (*context_, srcPoints, dstPoints,
hmatrix, NVX_FIND_HOMOGRAPHY_METHOD_USE_ALL_POINTS,
3, 2000, 10, 0.995, 0.45, inliers);
output:
created arrays with capacity 4
accessing src Points 0
[NVX LOG] vxAccessArrayRange: invalid range : {0, 3}
Thanks!