2022-4-2 学习总结分析

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#,搭建检测界面进行中
编写考试小程序进行中
实验分割车牌神经网络,整理论文进行中
毕设深度学习检测算法开发项目进行中
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值