我想在Halide中提取一个频道,
Halide::Image<uint8_t> input = load_image("images/rgb.png");
Halide::Var x, y;
Halide::Func green;
green(x,y)= {0, input(x, y, 1), 0};
Halide::Image<uint8_t> output =
green.realize(input.width(), input.height());
给出
只能将单元素实现转换为缓冲区或图像
一定很简单
答案 0 :(得分:2)
听起来你想要一个三通道输出,其中两个都是零,一个是输入图像的相应通道的内容。为此,请尝试:
green(x, y, c) = select(c == 1, input(x, y, 1), 0);
如果展开并限制,则执行中不会有条件评估。
答案 1 :(得分:0)
我想你想要:
green(x, y) = input(x, y, 1);
你所拥有的东西创建了三个输出图像的元组,其中两个是零。