背景
我做的一个项目,需要先对图片进行预处理,改变图片的像素值,然后再用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)