眼底图像血管分割学习笔记
一 图像处理

训练集的图片格式为tif
其中相应的分割标签格式 为gif
一开始想着这些图片是不是都要先转换成.jpg或者. png 在查阅了一些资料后其实还是不太清楚。然后在看别人的代码时,发现没有处理,所以就先这样弄着。
出现的问题
class Datasets(Dataset):def __init__(self,path):self.path = pathself.image_path = os.listdir(os.path.join(path,"images"))self.label = os.listdir(os.path.join(path,"1st_manual"))self.trans = torchvision.transforms.Compose([torchvision.transforms.ToTensor()])def __getitem__(self, index):image_path = self.image_path[index]label = self.label[index]image_label = [os.path.join(self.path, i) for i in ("images", "1st_manual")]img_o = cv2.imread(os.path.join(image_label[0], image_path))img_l = cv2.imread(os.path.join(image_label[1], label))# _,img_l = cv2.VideoCapture(os.path.join(image_label[1], label)).read()img_o = cv2.cvtColor(img_o, cv2.COLOR_BGR2RGB)img_l = cv2.cvtColor(img_l, cv2.COLOR_BGR2RGB)return self.trans(img_o),self.trans(img_l)def __len__(self):return len(self.image_path)
其中在将图像标签读取出来然后转换为RGB格式时,发现报错

去查阅了一番,报错原因是没有读取到相应的图片。回头去看代码时,在借鉴的代码里有我图中注释的那一串。然后又是一番查阅才知道,原来opencv无法直接读取.gif格式的图片,所以需要调用cv2.VideoCapture来读取.gif格式的图片。
补充:
1、vc = cv2.VideoCapture(0)
VideoCapture()中参数是0,表示打开笔记本的内置摄像头,参数是视频文件路径则打开视频,如vc = cv2.VideoCapture(".......")
2、ret,frame = vc.read()
vc.read()按帧读取视频,ret,frame是获cap.read()方法的两个返回值。其中ret是布尔值,如果读取帧是正确的则返回True,如果文件读取到结尾,它的返回值就为False。frame就是每一帧的图像,是个三维矩阵。(对应于代码的_,img_l)
完整代码(有参考别的大佬):
import torch
import torch.nn as nn
from torch.nn import functional as F
from torch.utils.data import Dataset
from torchvision.utils import save_image
from tqdm import tqdm
from PIL import Imageclass Datasets(Dataset):def __init__(self,path):self.path = path # 训练数据文件夹的路径self.image_path = os.listdir(os.path.join(path,"images"))self.label = os.listdir(os.path.join(path,"1st_manual"))self.trans = torchvision.transforms.Compose([torchvision.transforms.ToTensor()])def __getitem__(self, index):image_path = self.image_path[index]label = self.label[index]image_label = [os.path.join(self.path, i) for i in ("images", "1st_manual")]img_o = cv2.imread(os.path.join(image_label[0], image_path))# img_l = cv2.imread(os.path.join(image_label[1], label))_,img_l = cv2.VideoCapture(os.path.join(image_label[1], label)).read()img_o = cv2.cvtColor(img_o, cv2.COLOR_BGR2RGB)img_l = cv2.cvtColor(img_l, cv2.COLOR_BGR2RGB)return self.trans(img_o),self.trans(img_l)def __len__(self):return len(self.image_path)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
