对带文字白纸照片背景漂白处理时遇到的问题

参照仿照扫描全能王python程序实现_拍照转扫描件源码-CSDN博客中的python代码,对白纸文字图片进行漂白处理,但运行结果与这篇博客文章里面展示的结果不一致。

原因在于,在进行图像除法的过程中,图像数组的一些值已经超过了uint8的最大值255

print(img.min(), img.max())
# 38.585526 388.11322

直接将值转换为uint8的话,则会造成溢出,进而导致结果错误。在转换之前,需要使用np.clip对数据进行截尾处理

img = np.clip(img, 0, 255).astype(np.uint8)

再次运行,结果就正常了

全部代码如下

import cv2
import numpy as np
from scipy.ndimage import gaussian_filter

def gauss_division(image):
    '''高斯滤波,图像除法
    image cv2'''
    src1 = image.astype(np.float32)
    gauss = gaussian_filter(image, sigma=50)
    gauss1 = gauss.astype(np.float32)
    dst1 = (src1 / gauss1) * 255
    print(dst1.min())
    return dst1


img  = cv2.imread(r"C:\Users\Administrator\Desktop\20200710095315856.jpg")

cv2.namedWindow('img', cv2.WINDOW_NORMAL) 
img = gauss_division(img)
img = np.clip(img, 0, 255).astype(np.uint8)
cv2.imshow('img', img, )
cv2.waitKey()

  • 6
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值