P2.14 加载并显示绿色通道的图片 def load_green_image(basepath, image_id): image = np.zeros(shape=(512,512)) image[:,:] = imageio.imread(basepath + image_id + "_green" + ".png") return image fig = plt.figure() image = load_green_image('./dataset/train/', x_train[0][0]) plt.imshow(image, cmap='gray') print(image.shape) x = image[:,:,np.newaxis] print(x.shape)如何让解决
时间: 2023-11-27 17:49:55 浏览: 142
这段代码的问题在于:使用的是灰度图像的颜色映射(`cmap='gray'`),但是加载的是绿色通道的图像。因此,应该使用颜色映射 `cmap='Greens'` 来显示绿色通道的图像。
以下是修改后的代码:
```python
import matplotlib.pyplot as plt
import imageio
def load_green_image(basepath, image_id):
image = np.zeros(shape=(512, 512))
image[:, :] = imageio.imread(basepath + image_id + "_green" + ".png")
return image
fig = plt.figure()
image = load_green_image('./dataset/train/', x_train[0][0])
plt.imshow(image, cmap='Greens') # 注意这里使用的是 'Greens' 颜色映射
print(image.shape)
x = image[:, :, np.newaxis]
print(x.shape)
```
运行后,应该可以正确地显示出绿色通道的图像。
相关问题
coding=UTF-8 from flask import Flask, render_template, request, send_from_directory from werkzeug.utils import secure_filename from iconflow.model.colorizer import ReferenceBasedColorizer from skimage.feature import canny as get_canny_feature from torchvision import transforms from PIL import Image import os import datetime import torchvision import cv2 import numpy as np import torch import einops transform_Normalize = torchvision.transforms.Compose([ transforms.Normalize(0.5, 1.0)]) ALLOWED_EXTENSIONS = set([‘png’, ‘jpg’, ‘jpeg’]) app = Flask(name) train_model = ReferenceBasedColorizer() basepath = os.path.join( os.path.dirname(file), ‘images’) # 当前文件所在路径 def allowed_file(filename): return ‘.’ in filename and filename.rsplit(‘.’, 1)[1] in ALLOWED_EXTENSIONS def load_model(log_path=‘/mnt/4T/lzq/IconFlowPaper/checkpoints/normal_model.pt’): global train_model state = torch.load(log_path) train_model.load_state_dict(state[‘net’]) @app.route(“/”, methods=[“GET”, “POST”]) def hello(): if request.method == ‘GET’: return render_template(‘upload.html’) @app.route(‘/upload’, methods=[“GET”, “POST”]) def upload_lnk(): if request.method == ‘GET’: return render_template(‘upload.html’) if request.method == ‘POST’: try: file = request.files['uploadimg'] except Exception: return None if file and allowed_file(file.filename): format = "%Y-%m-%dT%H:%M:%S" now = datetime.datetime.utcnow().strftime(format) filename = now + '_' + file.filename filename = secure_filename(filename) basepath = os.path.join( os.path.dirname(file), ‘images’) # 当前文件所在路径 # upload_path = os.path.join(basepath,secure_filename(f.filename)) file.save(os.path.join(basepath, filename)) else: filename = None return filename @app.route(‘/download/string:filename’, methods=[‘GET’]) def download(filename): if request.method == “GET”: if os.path.isfile(os.path.join(basepath, filename)): return send_from_directory(basepath, filename, as_attachment=True) pass def get_contour(img): x = np.array(img) canny = 0 for layer in np.rollaxis(x, -1): canny |= get_canny_feature(layer, 0) canny = canny.astype(np.uint8) * 255 kernel = np.array([ [0, 1, 1, 1, 0], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [1, 1, 1, 1, 1], [0, 1, 1, 1, 0], ], dtype=np.uint8) canny = cv2.dilate(canny, kernel) # canny = Image.fromarray(canny) return canny @app.route(‘/embedding//’, methods=[“GET”, “POST”]) def icontran(img, reference): global train_model if request.method == ‘POST’: imgPath = os.path.join(basepath, img) referencePath = os.path.join(basepath, reference) img = cv2.imread(imgPath) if img is None or img.size <= 0: return None contour = get_contour(img).astype(np.float32).copy() contour = 255 - contour reference = cv2.imread(referencePath).astype(np.float32) reference = cv2.cvtColor(reference, cv2.COLOR_BGR2RGB) reference = transform_Normalize(torch.from_numpy(reference).permute(2, 0, 1).unsqueeze(0).float()/ 255.0) contour = transform_Normalize(torch.from_numpy(contour).unsqueeze(0).unsqueeze(0).float()/ 255.0) train_model.eval() transfer = train_model(contour, reference) transfer = transfer.squeeze(0) transfer = (transfer + 0.5).clamp(0, 1).mul_(255).permute(1, 2, 0).type(torch.uint8).numpy() transfer = transfer.numpy() cv2.imwrite(imgPath, transfer) return basepath # success if name == “main”: load_model() app.run(host=‘10.21.16.144’, port=9999, debug=True) 用puthon写一个调用这个服务器的gui
这是一段 Python 代码,它使用 Flask 框架来创建一个网站应用。它还导入了一些需要使用的库,如 werkzeug、numpy、torch 等。该代码可以对图片进行一些处理,如调整亮度、色彩等。其中包括一个可以将黑白图片变成彩色图片的算法 train_model。同时,代码中使用了一些图像处理的函数和变换,如 canny 算法和 einops。最后,它可以将处理后的图片保存在指定的文件夹中,并在网页中展示出来。
from flask import Flask, render_template from flask import Flask, render_template, request, redirect, url_for from werkzeug.utils import secure_filename from Predict import predict import os from gevent import pywsgi app = Flask(__name__) @app.route('/', methods = ['POST', 'GET']) def upload(): if request.method == 'POST': f = request.files['file'] if f.filename == '': return redirect(url_for('wrong')) basepath = os.path.dirname(__file__) upload_path = os.path.join(basepath, 'report', secure_filename(f.filename)) # 注意:没有的文件夹一定要先创建,不然会提示没有该路径 f.save(upload_path) # upload_path = str(upload_path) return redirect(url_for('result', path=f.filename)) return render_template('index.html') @app.route('/wrong') def wrong(): return render_template('wrong.html') @app.route('/result/<path>/') def result(path): result = predict('report/'+path) # return result return render_template('result.html', result=result) if __name__ == '__main__': app.run(debug=True) #server = pywsgi.WSGIServer(('127.0.0.1', 5000), app) #server.serve_forever() #app.debug=True 详细解释
这是一个使用 Flask 框架搭建的Web应用程序,用于上传文件并对上传的文件进行预测处理。程序包括三个路由:
1. `/` 路由用于展示上传文件的页面,请求方法为 GET 和 POST;
2. `/wrong` 路由用于展示上传文件出错的页面;
3. `/result` 路由用于展示上传文件处理结果的页面,请求方法为 GET。
其中,`@app.route()` 是 Flask 中定义路由的装饰器,`‘/’` 代表根目录,`methods=['POST', 'GET']` 表示支持 POST 和 GET 请求。
在 `upload()` 函数中,首先判断请求方法是否为 POST,如果是,则获取上传的文件,判断文件名是否为空,然后将上传的文件保存到指定路径下。如果文件名为空,则重定向到 `/wrong` 路由。最后将文件名作为参数传递到 `/result` 路由。如果是 GET 请求,则渲染上传文件的页面。
在 `wrong()` 函数中,渲染上传文件出错的页面。
在 `result()` 函数中,获取上传文件的文件名,调用 `predict()` 函数进行文件处理,最后渲染上传文件处理结果的页面,并将处理结果传递给页面。
`if __name__ == '__main__':` 是 Python 的入口函数,当直接运行 Python 文件时,会运行该函数下的代码。这里使用 `app.run(debug=True)` 启动 Flask 应用程序,并设置 `debug=True` 以便在开发调试时查看错误信息。
阅读全文