如何修复“TypeError:”努比·恩达雷'对象不可调用'

2024-09-30 18:33:56 发布

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

我正在尝试调整1920X1080的大小,并将灰度复制到128X32的白色背景上。但我得到了一个错误:

 Traceback (most recent call last):
  File "C:/Users/bnsid/Desktop/SimpleHTR-master - Copy/src/SamplePreprocessor.py", line 39, in <module>
    main()
  File "C:/Users/bnsid/Desktop/SimpleHTR-master - Copy/src/SamplePreprocessor.py", line 32, in main
    cv2.imshow('Greyscale_Stretched', target('float32'))
TypeError: 'numpy.ndarray' object is not callable

我的代码:

^{pr2}$

我想要一个白色背景的灰度图像。在


Tags: inpysrcmasterlineusers灰度file
2条回答

问题出在target('float32') 目标是努比·恩达雷,并在其后面加上(),这样就可以像函数一样调用它了

对于opencv图像,float32的范围是0.0-1.0,而uint8则在0-255的范围内

我可以看到您已经用target = np.ones([ht, wt]) * 255将目标转换为0-255范围,所以您应该使用'uint8'

现在来解决最初的问题。将numpy数组更改为其他数据类型

target = target.astype('uint8')

target = target.astype('float32') / 255.(除以255返回0-1.0范围)

或者您可以使用它而不存储新类型cv2.imshow('Greyscale_Stretched', target.astype('uint8'))

通常,当您试图从numpy调用某个东西时,这个问题会发生,因为它是function(),而不是type[]。如需参考,请参阅此处接受的注释why numpy.ndarray is object is not callable in my simple for python loop

要解决此问题,请尝试将第32行的一些括号改为方括号,因为括号用于函数,方括号用于数据类型。我想其中一个组合会奏效,但我可能还是错了。在

cv2.imshow('Greyscale_Stretched', target['float32'])
cv2.imshow['Greyscale_Stretched', target('float32')]
cv2.imshow['Greyscale_Stretched', target['float32']]

希望有帮助。在

相关问题 更多 >