Python 属性错误:';SpooledTemporaryFile';对象没有属性';调整大小';

Python 属性错误:';SpooledTemporaryFile';对象没有属性';调整大小';,python,flask,keras,Python,Flask,Keras,我正在尝试将Keras CNN图像分类器部署为flask应用程序。 当我试图上传一张图片进行分类时,下面的错误会出现 这是我的flask脚本,它从HTTP请求中读取一个图像,并呈现一个带有分类结果的模板: classifier=load_model('e:/catVSdog_model.h5')) def预测(iimage,target): def预测(iimage,target): iimage=iimage.resize(目标) iimage=img_到_数组(iimage) iimage=

我正在尝试将Keras CNN图像分类器部署为flask应用程序。 当我试图上传一张图片进行分类时,下面的错误会出现

这是我的flask脚本,它从HTTP请求中读取一个图像,并呈现一个带有分类结果的模板:

classifier=load_model('e:/catVSdog_model.h5'))
def预测(iimage,target):
def预测(iimage,target):
iimage=iimage.resize(目标)
iimage=img_到_数组(iimage)
iimage=np.展开尺寸(iimage,轴=0)
预测=分类器。预测(iimage)
如果预测[0][0]==1:
结果='dog'
其他:
结果='cat'
返回结果
@app.route(“/”,methods=[“GET”,“POST”])
def upload_图像():
如果request.method==“POST”:
如果请求文件:
上传的_image=request.files[“image”].read()
#上传的图片=image.open(io.BytesIO(上传的图片))
结果=预测(上传的图像,目标=(64,64))
打印(上传图片)
#上传的_image.save(os.path.join(app.config[“image_UPLOADS”],上传的_image.filename))
返回呈现模板('index.html',result=result)
#返回重定向(request.url)
返回渲染模板(“index.html”)
如果uuuu name uuuuuu='\uuuuuuu main\uuuuuuu':
app.run()
这是我在发送请求时遇到的例外情况:

Traceback (most recent call last):
  File "C:\Users\Ali\Anaconda3.2020\lib\site-packages\werkzeug\datastructures.py", line 3087, in __getattr__
    return getattr(self.stream, name)
AttributeError: 'SpooledTemporaryFile' object has no attribute 'resize'

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "C:\Users\Ali\Anaconda3.2020\lib\site-packages\flask\app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\Users\Ali\Anaconda3.2020\lib\site-packages\flask\app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\Users\Ali\Anaconda3.2020\lib\site-packages\flask\app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "C:\Users\Ali\Anaconda3.2020\lib\site-packages\flask\_compat.py", line 39, in reraise
    raise value
  File "C:\Users\Ali\Anaconda3.2020\lib\site-packages\flask\app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\Users\Ali\Anaconda3.2020\lib\site-packages\flask\app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\Users\Ali\Desktop\FlaskCNNProject\untitled2.py", line 63, in upload_image
    result=predict(iimage, target=(64, 64))
  File "C:\Users\Ali\Desktop\FlaskCNNProject\untitled2.py", line 41, in predict
    iimage=iimage.resize(target)
  File "C:\Users\Ali\Anaconda3.2020\lib\site-packages\werkzeug\datastructures.py", line 3093, in __getattr__
    return getattr(self.stream._file, name)
AttributeError: '_io.BytesIO' object has no attribute 'resize'

如何修复此错误?

我们需要创建PIL图像对象,以执行与图像相关的操作,如调整大小和其他操作。request.files['file']将为您提供字节对象,该对象不包含与图像相关的其他操作的调整大小。 我们可以使用下面的代码将这个字节对象转换成图像

from PIL import Image
uploaded_image = request.files.get["image"]
img = Image.open(uploaded_image)
现在只要把这个img对象传递给你的predict函数,就可以了


希望这有帮助

我们需要创建PIL图像对象,以执行与图像相关的操作,如调整大小和其他操作。request.files['file']将为您提供字节对象,该对象不包含与图像相关的其他操作的调整大小。 我们可以使用下面的代码将这个字节对象转换成图像

from PIL import Image
uploaded_image = request.files.get["image"]
img = Image.open(uploaded_image)
现在只要把这个img对象传递给你的predict函数,就可以了


希望这有帮助

我的代码应该对狗和猫进行分类,但在使用PIL解决方案后,答案总是:“狗”。好吧,这是代码中预测工作的进一步部分。我只是帮了你的忙。预测的准确性完全取决于分类器。我的代码应该对狗和猫进行分类,但在使用PIL解决方案后,答案总是:“狗”。好吧,这是代码中预测工作的进一步部分。我只是帮了你的忙。预测的准确性完全取决于分类器。