Python 烧瓶:类型错误:预期Ptr<;cv::UMat>;对于参数';%s';
我正在通过html上传一个Python 烧瓶:类型错误:预期Ptr<;cv::UMat>;对于参数';%s';,python,image,opencv,flask,upload,Python,Image,Opencv,Flask,Upload,我正在通过html上传一个img,并在打开的简历中处理它并显示图像。我在upload\u file.py中有arg解析器。因此,我直接以python3 upload_file.py--listofargs的形式运行应用程序 template.html 它是如何工作的? 我直接以python3 upload\u file.py--listofargs的形式运行flask应用程序,而不使用flask run命令 当我点击colorize时,我得到了上面的错误内部服务器错误 如何修复错误,以便通过ht
img
,并在打开的简历中处理它并显示图像。我在upload\u file.py
中有arg解析器。因此,我直接以python3 upload_file.py--listofargs的形式运行应用程序
template.html
它是如何工作的?
我直接以python3 upload\u file.py--listofargs
的形式运行flask应用程序,而不使用flask run
命令
当我点击colorize时,我得到了上面的错误内部服务器错误
如何修复错误,以便通过html
正确读取上传的img
,并通过flask显示opencv img
。在Python3中,您可以这样做:
将numpy导入为np
进口cv2
从io导入字节io?不需要吗?
def handle_data():
img=request.form['file']
image=cv2.imdecode(np.frombuffer(BytesIO(img.read(),np.uint8),cv2.IMREAD_不变)
cv2.imshow(“原创”,图片)#你为什么需要这个?
返回render_template('template.html',image=image)#不要忘记引号?
这将使您能够自己处理html呈现[我不是这方面的专家-但如果其他人能够提供帮助,我将把它纳入这个答案中。]
让我知道这是否适用于您提供完整的错误消息,包括回溯也就是说,不确定通过在服务器端调用cv2.imshow
可以实现什么(该函数需要在执行它的机器上使用GUI),更不用说在没有cv2.waitKey
的情况下了。我还假设request.form['file']
不包含原始像素数据,而是一个编码图像(在这种情况下,您需要先对其进行cv2.imdecode
解码)。是的,您不能通过Flask发送numpy数组。首先在其上使用cv2.imdecode()
,然后可以显示它
<html>
<form action="{{ url_for('handle_data') }}" method="post">
<input type="file" id="imageInput" name="file" enctype="multipart/form-data">
<ul class="list-group list-group-flush">
<li class="list-group-item">
<button type="submit" class="btn btn-primary">Colorize</button>
</li>
</ul>
</form>
<img src = {{image}}>
</html>
from flask import Flask, render_template, request
import cv2
from flask import jsonify
import argparse
import numpy as np
app = Flask(__name__)
@app.route('/', methods=['POST','GET'])
def index():
return render_template('template.html')
@app.route('/handle_data', methods=['POST','GET'])
def handle_data():
img = request.form['file']
image = np.array(img)
cv2.imshow("Original", image)
return render_template(template.html, image = image)