背景

我做的一个项目,需要先对图片进行预处理,改变图片的像素值,然后再用paddleocr进行图片内容识别。

问题

# img_arr 是图片像素矩阵
b = np.where(img_arr<237,0,img_arr)
b = np.where(img_arr<224,0,255)

上面这两行代码,我用第一种的时候,代码好好的,改成第二种了,运行结果如下:
在这里插入图片描述
也不报错,但结果就是不对呀,在网上查了又查,查到了1个跟我问题一样的兄弟or姐妹,但是没有解决方法。

分析

debug之后发现,第二种写法,导致 b 这个变量的类型变了,所以后面我把b 传到paddleocr里的时候,第二种就出现了如上图所示的情况。

b = np.where(img_arr<237,0,img_arr)

在这里插入图片描述

b = np.where(img_arr<224,0,255)

在这里插入图片描述

解决

int32类型的b转换为unit8类型即可,转换方式如下:

np.uint8(b)
Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐