Python 将图像转换为numpy阵列后,我应该做什么?

Python 将图像转换为numpy阵列后,我应该做什么?,python,arrays,numpy,Python,Arrays,Numpy,我正在做一个项目,其中我有电表读数的图像。我需要提取图像中的数字 我使用PIL image函数将图像转换为numpy数组 这是我键入的代码 import numpy as np from PIL import Image img_data = Image.open('meter1.jpg' ) img_arr = np.array(img_data) print(img_arr) 我得到这个numpy数组作为输出 [[[ 2 96 10] [ 2 96 10] [ 2

我正在做一个项目,其中我有电表读数的图像。我需要提取图像中的数字

我使用PIL image函数将图像转换为numpy数组

这是我键入的代码

import numpy as np
from PIL import Image
img_data = Image.open('meter1.jpg' )
img_arr = np.array(img_data) 
print(img_arr)
我得到这个numpy数组作为输出

[[[  2  96  10]
  [  2  96  10]
  [  2  96  10]
  ...
  [ 18 144  47]
  [ 13 141  48]
  [ 10 139  46]]

 [[ 11 105  19]
  [ 10 106  19]
  [ 10 104  18]
  ...
  [ 28 156  59]
  [ 26 156  60]
  [ 24 155  59]]

 [[ 19 115  26]
  [ 16 115  25]
  [ 17 113  24]
  ...
  [ 30 162  60]
  [ 28 164  62]
  [ 26 165  64]]

  ...

 [[  0 126  18]
  [  0 126  18]
  [  0 126  18]
  ...
  [  4 211  77]
  [  4 211  79]
  [  6 213  83]]

 [[  0 126  18]
  [  0 126  18]
  ...
  [  4 212  76]
  [  4 211  79]
  [  6 213  83]]

 [[  1 124  17]
  [  1 124  17]
  [  1 124  17]
  ...
  [  5 211  76]
  [  5 210  79]
  [  7 212  81]]]
如何使用此numpy数组从该图像中提取数值、数字或数字


它是一个七段显示器。将图像转换为numpy数组是否有用?有没有其他方法可以做到这一点。我在python方面做得不多,所以请帮助我,最好先尝试一些编码,因为这样可以提高您的编码技能。顺便说一下,我写了一个脚本,可以将数字保存到单独的图像文件中。希望它能帮助你的项目,提高你的技能

import numpy as np
from PIL import Image
import os
directory,filename = os.path.split(__file__)
#x = np.array([ [ [255,0,0], [0,255,0], [0,0,255] ],[ [0,0,0],[128,128,128],[2,5,200] ] ],dtype=np.uint8)
main_img = Image.open('img.jpg')
x = np.array(main_img)
print(x)
#print(x[1][1] )# x[row number][column number]
#print(x.shape[1] )# x.shape = # of rows,# of cols
data_cols = []
bg_color = x[0][0]
start = False
start_id = -1
for j in range(0,x.shape[1]):
    for i in range(0,x.shape[0]):
        if (x[i][j][0] < 5) and (x[i][j][2] < 10):
            if not start:
                start_id = j
                start = True
            break
        if i == x.shape[0]-1:
            start = False
            end_id = j
            if start_id>=0:
                data_cols.append([start_id,end_id])
                start_id=-1
print("Number of digits>",len(data_cols))
images = []
for i in range(0,len(data_cols)):
    images.append(x[:,data_cols[i][0]:data_cols[i][1]])
i = 0
for im_array in images:
    im = Image.fromarray(im_array,'RGB')
    im.save(directory + "\\" + str(i) + ".png")
    i += 1
    
将numpy导入为np
从PIL导入图像
导入操作系统
目录,文件名=os.path.split(_文件)
#x=np.数组([[[255,0,0],[0255,0],[0,0255],[[0,0,0],[128128128],[2,5200]],dtype=np.uint8)
main\u img=Image.open('img.jpg'))
x=np.数组(主\u img)
打印(x)
#打印(x[1][1])#x[行号][列号]
#打印(x.shape[1])#x.shape=#行数,#列数
数据_cols=[]
bg_color=x[0][0]
开始=错误
start\u id=-1
对于范围(0,x.shape[1])内的j:
对于范围(0,x.shape[0])内的i:
如果(x[i][j][0]<5)和(x[i][j][2]<10):
如果没有启动:
开始_id=j
开始=真
打破
如果i==x.shape[0]-1:
开始=错误
end_id=j
如果开始\u id>=0:
数据列追加([start\u id,end\u id])
start\u id=-1
打印(“位数>”,len(数据列))
图像=[]
对于范围(0,len(data_cols))中的i:
images.append(x[:,data_cols[i][0]:data_cols[i][1]]
i=0
对于图像中的im_阵列:
im=Image.fromarray(im_数组,'RGB')
保存(目录+“\\”+str(i)+“.png”)
i+=1

您能添加一个普通的python标记吗?这能回答您的问题吗?“使用python和OpenCV从图像中提取数字”中的代码似乎对我的imageAttributeError不起作用:“NoneType”对象没有属性“重塑”。我得到这个错误,请帮助