同一功能的不同结果(numpy、OCR)

2024-09-26 22:52:29 发布

您现在位置:Python中文网/ 问答频道 /正文

import numpy as np
from PIL import Image
import matplotlib.pyplot as plt

我正在用python3.4.1编写一个程序来分析某种类型的验证码。 这是我有问题的地方。在

^{pr2}$

现在当我为路径'p'调用f()时,它会给出一个特定的结果(这是错误的)。当我单独调用f()中的每个指令时,它会给出另一个结果(这是正确的):

i = Image.open('p')
ia = np.array(i)
ib = combinator(ia)
capreader(ib)

这太奇怪了!因为我认为在逻辑上他们应该给出同样的结果。 然后我试着看看在f()内部,如果数组b不在f()中,它是否是相同的:

def x(path):
    i = Image.open(path)
    a = np.array(i)
    b = combinator(a)
    print(np.array_equal(b,ib)

结果是假的。 然后我测试了这个:

def y(path):
    i = Image.open(path)
    a = np.array(i)
    b = combinator(a)
    plt.imshow(b)
    plt.show()
    capreader(b)

这次(在我关闭pyplot窗口之后)capreader()给出了正确的答案!! 所以我继续测试,这次是这样:

def test(path):
    a = Image.open(path)
    b = np.array(a)
    c = combinator(b)
    print(np.array_equal(c,ib)) #False
    plt.imshow(c)
    plt.show()
    print(np.array_equal(c,ib)) #True
    capreader(c)

我不明白发生了什么事,也不知道该怎么解决。很明显,在这两个比较中,plt函数的不同给出了相反的结果(False,True)。我在网上看到表演()是一个阻塞函数。我不知道那是什么意思,但我把它放在这里,以防有助于破案。在


Tags: pathimageimportdefasnppltequal

热门问题