我在内存中有一个上传的文件。我想用cv2操纵文件。目前,我将文件写入磁盘,然后使用cv2读取它。如何跳过编写文件并直接用cv2加载?
file = request.files['file']
# if file and allowed_file(file.filename):
# save file
filename = secure_filename(file.filename)
file_path = os.path.join(dressrank.config['SHOW_IMG_FOLDER'], filename);
file.save(file_path)
img_path = file_path
# COLOR FATURE EXTRACTION
img = read_img(img_path)
img =img_resize(img, 500)
答案 0 :(得分:17)
使用上传的数据构建一个numpy数组。使用cv2解码此数组。
img = cv2.imdecode(numpy.fromstring(request.files['file'].read(), numpy.uint8), cv2.IMREAD_UNCHANGED)
Prior to OpenCV 3.0, use cv2.CV_LOAD_IMAGE_UNCHANGED
instead.
答案 1 :(得分:2)
如果使用BaseHTTPRequestHandler,则应首先创建一个ndata = ['state', 'active', 'deaths', 'recovered']
ndata.forEach((el, k) => {
let td$k = document.createElement('td');
td$k.innerText = filtered[i][el];
tr.appendChild(td$k);
});
表单:
FieldStorage
然后:
fm = cgi.FieldStorage(fp=self.rfile, headers=self.headers, environ={'REQUEST_METHOD':'POST'})
另外,请注意,if "file" in fm:
image = cv2.imdecode(np.frombuffer(fm['file'].file.read(), np.uint8), cv2.IMREAD_UNCHANGED)
已过时,这就是为什么我要用fromstring
更新大卫的答案。