opencv 读取图片
OpenCV读取图片的主要函数是cv2.imread, 有三种读取方式:
cv2.imread(image path, cv2.IMREAD_COLOR) 这种是加载彩色图片,也可以写成:
cv2.imread(image path,1)
cv2.imread(image path, cv2.IMREAD_GRAYSCALE) 直接读取成为灰度图片,也可以写成 cv2.imread(image path,0)
cv2.imread(image path, cv2.IMREAD_UNCHANGED) 用图片的原来的格式打开,也可以写成 cv2.imread(image path,-1)
torch.from_numpy()用来将数组array转换为张量Tensor
import os
from tqdm import tqdm
import glob
import numpy as np
import torch
import os
import cv2
image_path = os.path.join(test_dir, image_id + ".png")
img = cv2.imread(image_path)
origin_shape = img.shape
# print(origin_shape)
# 转为灰度图
img = cv2.cvtColor(img, cv2.COLOR_RGB2GRAY)
img = cv2.resize(img, (512, 512))
# 转为batch为1,通道为1,大小为512*512的数组
img = img.reshape(1, 1, img.shape[0], img.shape[1])
# 转为tensor
img_tensor = torch.from_numpy(img)
# 将tensor拷贝到device中,只用cpu就是拷贝到cpu中,用cuda就是拷贝到cuda中。
img_tensor = img_tensor.to(device=device, dtype=torch.float32)
# 预测
pred = net(img_tensor)
# 提取结果
图片修改大小
import os
import numpy as np
import cv2
from PIL import Image
def letterbox_image(image, size):
iw, ih = image.size
w, h = size
scale = min(w/iw, h/ih)
nw = int(iw*scale)
nh = int(ih*scale)
image = image.resize((nw,nh), Image.BICUBIC)
# new_image = Image.new('RGB', size, (128,128,128))
new_image = Image.new('RGB', size, (0,0,0))
new_image.paste(image, ((w-nw)//2, (h-nh)//2))
return new_image
def search_files(directory):
directory = os.path.normpath(directory)
objects = {}
for curdir, subdirs, files in os.walk(directory):
for file in files:
if file.endswith(('.png','jpeg','jpg')):
label = curdir.split(os.path.sep)[-1]
if label not in objects:
objects[label] = []
path = os.path.join(curdir, file)
objects[label].append(path)
return objects
if __name__ == "__main__":
# train_samples = search_files('/root/image/car image/chest/seg')
train_samples = search_files(r'E:/dataset/new_car2')
print(train_samples)
for label, filenames in train_samples.items():
for filename in filenames:
img = Image.open(filename)
# new_img = letterbox_image(img, (224, 224))
new_img = letterbox_image(img, (512, 512))
new_img.save(filename)
图片二值化
import os
import cv2
import numpy as np
bace_path = r"/dataset/new_car2/labels"
save_path = r'E:/dataset/new_car2/masks'
if not os.path.exists(save_path):
os.makedirs(save_path)
for im in os.listdir(bace_path):
img = cv2.imread(os.path.join(bace_path, im))
b, g, r = cv2.split(img)
r[np.where(r != 0)] = 255
print(r)
cv2.imwrite(os.path.join(save_path, im), r)
Unet训练指标分析
import numpy as np
#防止出现错误警报
np.seterr(divide='ignore',invalid='ignore')
# 精确度计算
def _fast_hist(label_true, label_pred, n_class):
mask = (label_true >= 0) & (label_true < n_class)
hist = np.bincount(n_class * label_true[mask].astype(int) +label_pred[mask],
minlength=n_class ** 2).reshape(n_class, n_class)
return hist
def label_accuracy_score(label_trues, label_preds, n_class):
hist = np.zeros((n_class, n_class))
#将标签和预测图像按行放入函数中
for lt, lp in zip(label_trues, label_preds):
hist += _fast_hist(lt.flatten(), lp.flatten(), n_class)
acc = np.diag(hist).sum() / hist.sum()#总体精确度计算
acc_cls = np.diag(hist) / hist.sum(axis=1)#求得每一类像素精确度的平均值
acc_cls = np.nanmean(acc_cls)#求得总体平均精确度
iu = np.diag(hist) / (hist.sum(axis=1) + hist.sum(axis=0) - np.diag(hist))#按类别求得交并比
mean_iu = np.nanmean(iu)#求得总体平均交并比
freq = hist.sum(axis=1) / hist.sum()#求得标签中各个类别所占的比例
fwavacc = (freq[freq > 0] * iu[freq > 0]).sum()#按权值计算交并比
return acc, acc_cls, mean_iu, fwavacc
学习总结--------------------------------------------------------------------
django网站开发学习记录
is_authenticated()如果是真正的 User 对象,返回值恒为 True 。 用于检查用户是否已经通过了认证。
通过认证并不意味着用户拥有任何权限,甚至也不检查该用户是否处于激活状态,这只是表明用户成功的通过了认证。 这个方法很重要, 在后台用request.user.is_authenticated()判断用户是否已经登录
Visual Studio 多行注释 快捷键
注释先按 Ctrl + K ,再按 Ctrl + C
取消注释:先按 Ctrl + K,再按 Ctrl + U
C#,搭建检测界面小测试
以上部分代码是本周的学习一小部分记录。相关学习进度如下表所示:
目标 | 计划进度 |
---|---|
学习C#,搭建检测界面 | 进行中 |
编写考试小程序 | 进行中 |
实验分割车牌神经网络,整理论文 | 进行中 |
毕设深度学习检测算法开发项目 | 进行中 |