我尝试使用 Halide 编写简单的图像计算程序。所以我从亮度功能开始。
我懂了
Halide::ImageParam img(Halide::type_of<float>(), 3);
img.set_stride(0, 4);
img.set_stride(2, 1);
Halide::Func f;
Halide::Var x, y, c;
Halide::Param<float> brightnesMod;
f(x, y, c) = img(x,y,c) * brightnesMod;
f.vectorize(x, 16).parallel(y);
auto & obuff = f.output_buffer();
obuff.set_stride(0, 4);
obuff.set_stride(2, 1);
std::vector<Halide::Argument> arguments = { img, brightnesMod };
f.compile_to_file("function", arguments);
return 0;
但后来我有一个问题。我的图像是 RGBA 图像,所以我用 alpha 计算算法。如何跳过它,并更改 f(x,y,c) 以使 c 仅为 0-2?