我创建了一个Image分类器Flask应用程序,但是它不读取我输入的图像(都不显示)。我已经尝试了在互联网上找到的所有解决方案,但无法解决我的问题。
下面是我正在使用的Flask API:
@app.route('/upload',methods=['GET','POST'])
def upload_analyze():
if request.method == 'POST':
# check if a file was passed into the POST request
if 'image' not in request.files:
flash('No file was uploaded.')
return redirect(request.url)
image_file = request.files['image']
#print(image_file)
image_file = str(image_file)
image = cv2.imread(image_file)
clt = KMeans(n_clusters = 3)
dataset = pd.read_csv('bb22.csv')
X = dataset.iloc[:, 1: 8].values
sc = StandardScaler()
global orig , r
# load the image, convert it to grayscale, and blur it slightly
#images = np.array(Image.open(image_file))
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
gray = cv2.GaussianBlur(gray, (7, 7), 0)
................
它获取谷物的输入图像,计算其长度,宽度,并判断其整体(1)/破碎(0)
答案 0 :(得分:1)
我发现this个flask文件在线上传了示例代码。
我认为您代码中的问题是request.files['image']
的返回值是一个对象,该对象具有类似save()
和filename()
的方法。 cv2.imread()
需要一个文件作为输入,因此str(image_file)
不起作用。
在上面的链接中查看示例,以了解如何使用返回值保存文件:
f = request.files['file']
filename = secure_filename(f.filename)
f.save(filename)
image = cv2.imread(filename)