Работа с кортежами в Halide
Я хочу извлечь один канал в 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());
дает
Может приводить только одноэлементные реализации к буферам или изображениям.
это должно быть просто
2 ответа
Звучит так, как будто вы хотите трехканальный выход, в котором все два равны нулю, а один - содержимое соответствующего канала входного изображения. Для этого попробуйте:
green(x, y, c) = select(c == 1, input(x, y, 1), 0);
Если это развернуто и ограничено, в выполнении не будет условной оценки.
Я думаю, что вы хотите:
green(x, y) = input(x, y, 1);
У вас есть набор из трех выходных изображений, два из которых равны нулю.