1
我有興趣修改Halide像素的各個顏色通道。例如,我如何照亮紅色通道,但保持綠色和藍色通道不變?增亮所有顏色對所有像素應該是這樣的:如何在Halide中單獨修改顏色通道?
Halide::Expr value = input(x, y, c);
value = value * 2.0f;
brighter(x, y, c) = value;
但是試圖亮與下面的方法的單個信道時,當接收到錯誤。
Halide::Expr value = input(x, y, c);
value(x,y,0) = value(x,y,0) * 2.0f; // brighten red
value(x,y,1) = value(x,y,2); // keep green the same
value(x,y,2) = value(x,y,3); // keep blue the same
brighter(x, y, c) = value;
錯誤:
ImgPipe_Halide.cpp:88:14: error: no match for call to ‘(Halide::Expr) (Halide::Var&, Halide::Var&, int)’
所以,我怎麼能讀取像素單個通道的價值觀,以及如何對其進行修改?
謝謝你的回答!這適用於您輸入的輸入。有趣的是,從價值中選擇(實際上相同的錯誤),這是行不通的。我想這意味着選擇函數與Halide函數和圖像一起使用,但不與表達式一起使用。 – Kantthpel
這是正確的解決方案。錯誤是因爲你不能像使用自由變量那樣對Expr編制索引。你只能用自由變量索引Funcs。 value(x,y,0)沒有意義 - 值已經被輸入(x,y,c),而不是輸入(x,y,0)。 –