Я попытался запустить следующую программу на компьютере Windows с помощью Visual Studio:
#include <Halide.h>
#include "halide_image_io.h"
#include "png.h"
using namespace Halide;
using namespace Halide::Tools;
int main(int argc, char** argv)
{
Buffer<uint8_t> in = load_image("images/rgb.png");
Func blurx, out;
Var x, y,c, xi, yi;
printf("width : %d, height: %d and channels: %d",in.width(),in.height(),in.channels());
//width = 768, height = 1280
blurx(x, y,c) = (in(x, y,c) + in(x, y,c) + in(x, y,c)) / 3.0f;
out(x, y,c) = (blurx(x, y,c) + blurx(x, y,c) + blurx(x, y,c)) / 3.0f;
out.tile(x, y, xi, yi, 256, 32).vectorize(xi, 8).parallel(y);
Buffer<uint8_t> result = out.realize(in.width(), in.height(),in.channels());
save_image(result, "output/output.png");
return 0;
}
Я получаю сообщение об ошибке «Невозможно сохранить изображение в этом формате». Ошибка не возникает, когда я удаляю '/3.0f'. Таким образом, разделение может приводить к тому, что некоторые значения пикселей имеют неправильный формат. Следовательно, я не могу сохранить его в формате .png. Как я могу решить это? Обратите внимание: формула должна была быть (в (x-1, y, c) + in (x, y, c) + in (x + 1, y, c)) / 3.0f; .... но это дает мне ошибку "доступ за пределы входного буфера" .... я сначала пытаюсь устранить ошибку деления, поэтому на данный момент я изменил формулу .. которая помогла мне поймать эта ошибка.