python识别电脑图像_计算机屏幕图像识别

这个答案实现了我在评论中所说的。在

我对你的代码做了一点修改,用opencv避免了形式的变化。代码是用python3.5编写的

为了提取数字,我将图像按列求和并缩放结果数组以得到check。我在这里操作您已经剪切的gray图像,有效地去除了下划线。在x_sum = np.sum(gray, axis = 0)

check = ((x_sum)/np.max(x_sum)*10)

该数组现在可用于与阈值进行比较,以识别字母/数字所在的区域,例如:

^{pr2}$

现在,我们将使用此信息修改图像并删除check数组值为0的区域,例如:

^{3}$

因此我们有这样的形象:

你已经在做的事情还可以进一步处理。这提供了独立的字母/数字,然后可以进行后处理以供学习。在

下一步是缩放字母/图像的大小,这些字母/图像由相同数量的特征描述。在

最后,您可以使用预训练分类器来预测最可能的字母/数字。在

完整代码如下:import numpy as np

import os

import matplotlib.pyplot as plt

from scipy.stats import mstats

import scipy

from matplotlib import gridspec

from PIL import Image

image = Image.open("testl.png")

f = image.convert('I')

gray = np.array(f)

gray[gray<200] = 0

gray[gray>=200] = 255

gray = gray[~np.all(gray == 255, axis=1)]

gray = gray[:,~np.all(gray == 255, axis=0)]

gray = gray[~np.all(gray == 0, axis=1)]

plt.imshow(gray, cmap='gray')

x_sum = np.sum(gray, axis = 0)

check = ((x_sum)/np.max(x_sum)*10)

plt.plot((check<8).astype(int))

plt.show()

plt.matshow(gray)

plt.show()

for idx,i in enumerate((check<8).astype(int)):

if i < 1:

gray[:,idx] = 255

plt.matshow(gray)

plt.show()

words = np.hsplit(gray, np.where(np.all(gray >= 200,axis=0))[0])

gs = gridspec.GridSpec(1,len(words))

fig = plt.figure(figsize=(len(words),1))

i = 0

for word in words:

word = word[:,~np.all(word >= 230, axis=0)]

if(word.size):

ax = fig.add_subplot(gs[i])

print (word.shape)

i = i + 1

ax.matshow(word, aspect = 'auto')

plt.show()

最后生成所有独立的字母/数字,例如:

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值