我正在try 从一些图像中提取文本,但是,这些图像带有一点背景,我try "播放"对比度和亮度,并希望应用像otsu这样的阈值技术.

你对如何提高提取率有什么建议吗?我在下面留下一些处理部分,以及输入和输出,欢迎您提出任何建议.

Input:
Input

输出:

output

处理:

enhancer = ImageEnhance.Brightness(img)
img = enhancer.enhance(1.62)  # 1.8
enhancer2 = ImageEnhance.Contrast(img)
img = enhancer2.enhance(1.8)  # 2
img = np.array(img)
thresh = cv2.threshold(img, 0, 255, cv2.THRESH_BINARY | cv2.THRESH_OTSU)[1]

推荐答案

您应该执行自适应阈值.该算法将图像分割为预定义大小的块.根据每个块内的像素强度, for each 块指定不同的阈值.在以下示例中,基于应用于每个块内所有像素值之和的高斯权重获得阈值(意味着基于高斯曲线为相似像素值赋予更多权重).基于每个块的该值执行二值化.判断this page for more

对于给定的图像,我try 了以下方法:

im = cv2.imread('text_block.jpg')
green_channel = im[:,:,1]
th = cv2.adaptiveThreshold(green_channel, 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 27, 6)

enter image description here

您必须try 调整参数以获得更好的结果.再试试cv.ADAPTIVE_THRESH_MEAN_C

Python相关问答推荐

Flask:如何在完整路由代码执行之前返回验证

如何计算部分聚合数据的统计数据

使用Python Great Expectations和python-oracledb

如何在不使用字符串的情况下将namedtuple属性传递给方法?

使用Python和PRNG(不是梅森龙卷风)有效地生成伪随机浮点数在[0,1)中均匀?

将numpy矩阵映射到字符串矩阵

如何在Deliveryter笔记本中从同步上下文正确地安排和等待Delivercio代码中的结果?

将numpy数组存储在原始二进制文件中

如何自动抓取以下CSV

运行总计基于多列pandas的分组和总和

如何制作10,000年及以后的日期时间对象?

如果条件不满足,我如何获得掩码的第一个索引并获得None?

如何在WSL2中更新Python到最新版本(3.12.2)?

Pre—Commit MyPy无法禁用非错误消息

Pandas DataFrame中行之间的差异

不允许访问非IPM文件夹

不能使用Gekko方程'

如何启动下载并在不击中磁盘的情况下呈现响应?

合并帧,但不按合并键排序

基于另一列的GROUP-BY聚合将列添加到Polars LazyFrame