如何在Halide中转置图像缓冲区?

时间:2019-09-09 17:09:28

标签: c++ halide

我想转置Halide :: Buffer。有办法吗?

我曾在Halide中尝试过transpose()。但是显示错误。

    Halide::Func B;
    Halide::Var x, y, c; 
    B(x, y, c)= 0.0f;
    B(0,0,c)=  1.0f; B(1,0,c)= 0.0f; B(2,0,c)= 0.0f; 
    B(0,1,c)=  1.0f; B(1,1,c)= 2.0f; B(2,1,c)= 0.0f; 
    B(0,2,c)=  1.0f; B(1,2,c)= 2.0f; B(2,2,c)= 3.0f;

    Halide::Buffer<float> B_mat = B.realize(6, 6, 1);

    Halide::Buffer<float> C_mat = B_mat.transposed(0,1);

错误:请求从“ void”转换为非标量类型“ Halide :: Buffer”      Halide :: Buffer C_mat = B_mat.transpose(0,1);

1 个答案:

答案 0 :(得分:0)

您发布的代码和错误消息之间似乎不匹配。 您的错误消息指出您已使用transpose(0, 1),但不会返回Halide::Buffer<float>

void transpose(int d1, int d2)

您应该看看documentation of transpose and transposed并使用

Buffer<T, D> transposed(int d1, int d2)

相反。