python会不会溢出_python – 增加图像亮度而不会溢出

这是我用一种清理特定图像的简单算法的镜头.随意玩它并进一步调整以获得所需的结果.

注意:显示的代码应该适用于OpenCV的2.4.x和3.x分支.

第0步

将输入图像加载为灰度.

img = cv2.imread('paper.jpg',0)

步骤1

扩大图像,以摆脱文本.

此步骤有助于保留条形码.

dilated_img = cv2.dilate(img,np.ones((7,7),np.uint8))

第2步

中位数使用适当大小的内核模糊结果以进一步抑制任何文本.

这应该会给我们一个相当不错的背景图像,其中包含所有阴影和/或变色.

bg_img = cv2.medianBlur(dilated_img,21)

第3步

计算我们刚刚获得的原始和背景之间的差异.相同的位将是黑色(接近0差异),文本将是白色(大差异).

由于我们想要白色的黑色,我们反转结果.

diff_img = 255 - cv2.absdiff(img,bg_img)

第4步

标准化图像,以便我们使用完整的动态范围.

norm_img = diff_img.copy() # Needed for 3.x compatibility

cv2.normalize(diff_img,norm_img,alpha=0,beta=255,norm_type=cv2.NORM_MINMAX,dtype=cv2.CV_8UC1)

第5步

在这一点上,我们仍然有一些灰色的纸张.我们可以将其截断,并重新标准化图像.

_,thr_img = cv2.threshold(norm_img,230,cv2.THRESH_TRUNC)

cv2.normalize(thr_img,thr_img,dtype=cv2.CV_8UC1)

完成…

好吧,至少对我来说;)你可能想要裁剪它,并做任何你想要的后处理.

注意:获得差异图像后,可能需要切换到更高的精度(16位整数或浮点数),以便最大限度地减少重复标准化中累积的舍入误差.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值