Python OpenCV 实现拍照图片背景去除
本文介绍如何利用 Python 和 OpenCV 库去除拍照图片中的背景。通过自适应阈值处理、形态学操作生成掩膜,结合位运算还原清晰图像,适用于文档扫描与自动化办公场景。
背景去除的实现原理
在使用手机或相机拍摄包含文字或文档的图片时,往往会带入灰色或黑色的背景。这种背景不仅影响视觉观感,还会干扰后续的图像识别与打印效果。利用 Python 的图像处理能力,我们可以自动识别前景并去除背景,从而还原清晰的图像内容。
环境准备与代码实现
实现该功能主要依赖 cv2 和 numpy 两个库。核心思路是先通过灰度转换与自适应阈值处理提取前景文字,再通过形态学操作优化掩膜,最后利用位运算将前景与背景分离。
#!/usr/bin/python3.6
# -*- coding: utf-8 -*-
# @Time : 2020/11/17 19:06
# @Author : ptg
# @Email : zhxwhchina@163.com
# @File : 去背景.py
# @Software: PyCharm
import cv2 as cv
import numpy as np
# 读取图像并转换为灰度图
image = cv.imread("text1.png",cv.IMREAD_GRAYSCALE)
# 自适应阈值处理,提取前景文字
binary = cv.adaptiveThreshold(image,255,
cv.ADAPTIVE_THRESH_GAUSSIAN_C,cv.THRESH_BINARY_INV,25,15)
# 构建结构元素并进行形态学闭运算,连接断裂的文字部分
se = cv.getStructuringElement(cv.MORPH_RECT,(1,1))
se = cv.morphologyEx(se, cv.MORPH_CLOSE, (2,2))
# 膨胀操作生成背景掩膜
mask = cv.dilate(binary,se)
cv.imshow("image",image)
# 反转掩膜,获取文字区域的掩膜
mask1 = cv.bitwise_not(mask)
# 将原图与文字掩膜进行位与运算,保留文字部分
binary =cv.bitwise_and(image,mask)
# 将文字部分与反转的背景掩膜相加,得到最终结果
result = cv.add(binary,mask1)
cv.imshow("reslut",result)
# 保存处理后的图像
cv.imwrite("reslut00.jpg",result)
# 等待按键关闭窗口
cv.waitKey(0)
cv.destroyAllWindows()处理流程解析
- 灰度转换:使用
cv.IMREAD_GRAYSCALE读取图像,简化后续处理。 - 自适应阈值:利用
cv.adaptiveThreshold将图像二值化,cv.THRESH_BINARY_INV确保文字部分为白色(255),背景为黑色(0)。 - 形态学处理:通过
cv.morphologyEx进行闭运算,修复文字内部的空洞;再通过cv.dilate膨胀操作生成背景掩膜。 - 位运算合成:利用
cv.bitwise_not反转掩膜,结合cv.bitwise_and和cv.add将前景文字与白色背景合并,实现背景去除。
应用场景
该技术不仅用于图像美化,还可结合 Python 的文字识别功能,将处理后的清晰图像转换为 PDF 等文档,广泛应用于自动化办公与文档数字化场景。


以上就是 Python + opencv 对拍照得到的图片进行背景去除的实现方法的详细内容,更多关于 Python 图像处理与自动化办公的资料请关注本站其它相关文章!
免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。









