我是OpenVX新手,从文档中了解到OpenVX使用行主存储器。下面的矩阵访问示例说明了这一点,就像我们在普通C代码中使用的普通行主访问模式一样。
然后我转到矩阵和vxCreateMatrix文档页面。前者的声明如下:
VX_MATRIX_ROWS -矩阵REQ-1131的M维数.只读REQ-1132。使用vx_size参数。VX_MATRIX_COLUMNS -矩阵REQ-1133的N维.只读REQ-1134。使用vx_size参数。
后者说:
vx_matrix vxCreateMatrix(
vx_context c,
vx_enum data_type,
vx_size columns,
vx_size rows);根据我的理解,在OpenVX世界里,当我说MxN矩阵时,M是指行大小,N是指列大小。vxCreateMatrix声明遵循行主存储器的话,首先是参数column,然后是row。
然而,当我到达经纱仿射页面时,我真的很困惑,它说:
该内核使用像素坐标转换方法REQ-0498对2x3矩阵M执行仿射变换:
和C声明:
// x0 = a x + b y + c;
// y0 = d x + e y + f;
vx_float32 mat[3][2] = {
{a, d}, // 'x' coefficients
{b, e}, // 'y' coefficients
{c, f}, // 'offsets'
};
vx_matrix matrix = vxCreateMatrix(context, VX_TYPE_FLOAT32, 2, 3);
vxCopyMatrix(matrix, mat, VX_WRITE_ONLY, VX_MEMORY_TYPE_HOST);如果M是一个2x3矩阵,根据前面的部分,它应该有2行3列。那么为什么要将其声明为mat[3][2],而createMatrix则接受column=2和row=3作为参数?我的理解完全错了吗?
发布于 2021-09-15 12:13:59
https://stackoverflow.com/questions/68994869
复制相似问题