一? 图像处理
训练集的图片格式为tif
?其中相应的分割标签格式?为gif
一开始想着这些图片是不是都要先转换成.jpg或者. png? 在查阅了一些资料后其实还是不太清楚。然后在看别人的代码时,发现没有处理,所以就先这样弄着。
出现的问题
class 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)
其中在将图像标签读取出来然后转换为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)
|