wormtql/yas

to_gray方法zip迭代导致图片异常无法正确识别

Closed this issue · 0 comments

我在运行时候发现圣遗物的信息提取失败,发现是模型不能从图片中识别文字信息,我查看了src/inferences/pre_process.rs中的to_gray方法,感觉其中循环的zip迭代方式可能不妥,zip同时迭代行和列好像导致最终图像只包含一条线,我将zip迭代改成了普通的图像遍历方式之后成功运行并导出了json,请问这样的修改是否会导致其它不好的效果,如果是该如何正确解决呢?修改部分如下,注释是原代码,下方为修改后部分。

pub fn to_gray(raw: &RgbImage) -> GrayImageFloat {
    let mut new_gray = GrayImageFloat::new(raw.width(), raw.height());
    // for (x, y) in (0..raw.width()).zip(0..raw.height()) {
    //     let rgb = raw.get_pixel(x, y);
    //     let r = rgb[0];
    //     let g = rgb[1];
    //     let b = rgb[2];

    //     let r = r as f32 / 255.0;
    //     let g = g as f32 / 255.0;
    //     let b = b as f32 / 255.0;

    //     let gray = r as f32 * 0.2989 + g as f32 * 0.5870 + b as f32 * 0.1140;
    //     let grayp = new_gray.get_pixel_mut(x, y);
    //     grayp[0] = gray ;
    // }
    for x in (0..raw.width()){
        for y in(0..raw.height()){
            let rgb = raw.get_pixel(x, y);
            let r = rgb[0];
            let g = rgb[1];
            let b = rgb[2];

            let r = r as f32 / 255.0;
            let g = g as f32 / 255.0;
            let b = b as f32 / 255.0;

            let gray = r as f32 * 0.2989 + g as f32 * 0.5870 + b as f32 * 0.1140;
            let grayp = new_gray.get_pixel_mut(x, y);
            grayp[0] = gray;
        } 
    }
    new_gray
}