OCR文本投影直方图

我们可以对图片进行投影,找到感兴趣区域,尤其对于格式固定,且场景简单的OCR文本,投影直方图是个不错的方法。
文本
投影直方图

环境

python3.6
opencv-python

思路

统计每一行的像素值,观察形状进行分割

代码

  1. 读入图片,并转成灰度图
image = cv2.imread(图片路径)
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
  1. 统计每一行的像素值
# 统计一行像素总数
def countX(arr):
   count = [0] * len(arr)
   for h in range(len(arr)):
       count2 = 0
       for l in range(len(arr[h])):
           count2=count2+255-arr[h, l]
       count[h] = count2
   return count
  1. 绘制直方图并保存
plt.barh(arr, count, height=1, color='steelblue', alpha=0.8)      # 从下往上画
plt.savefig(直方图路径)
plt.show()

效果
在这里插入图片描述
直方图投影
图中基本每个峰,都是一行文本
用红色标出文本部分:
在这里插入图片描述

绘制投影直方图完整代码

#coding:utf-8
#author:FengShuo

import cv2
from matplotlib import pyplot as plt

pic='000803_00'
image = cv2.imread('./detect_img/'+pic+'.jpg')
image = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# 统计一行像素总数
def countX(arr):
  count = [0] * len(arr)
  for h in range(len(arr)):
      count2 = 0
      for l in range(len(arr[h])):
          count2=count2+255-arr[h, l]
      count[h] = count2
  return count

count = countX(image)
arr=list(range(len(count)))

plt.barh(arr, count, height=1, color='steelblue', alpha=0.8)
plt.savefig('./detect_img/'+pic+'_bar2.jpg')
plt.show()

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值