****加粗样式虽然啰嗦一点,但好歹halcon自己熟悉,不会忘记,用os 和 pil会导致脑子记得东西太多
import halcon as ha
import torch
from torch.utils.data import Datasetpath0 = r'E:\BaiduNetdiskDownload\cell'
class MyDataset(Dataset):def __init__(self, path0):self.path = path0self.image_files = ha.list_files(path0 + '\masks','files')def __len__(self):number= ha.tuple_length(self.image_files)return numberdef __getitem__(self, index):path1=self.image_files[index]print('path1',path1)image_marks = ha.read_image(path1)#### 这里要注意的是分割符 “\\”tuple_string = ha.tuple_split(path1,"\\")leng = ha.tuple_length(tuple_string)name_string =ha.tuple_select(tuple_string,leng-1)name_s = ha.tuple_split(name_string,'.')name = name_s[0]test_image_files = ha.list_files(self.path + '\imgs','files')path = ha.tuple_regexp_select(test_image_files, name+'.')###如果数据集是0,1.。。。。200这样的话 0,10,100,110是比较麻烦的,建议命名用 n+数字 也就是英文字母加数字的形式更方便一些if int(name) <10:path=path[0]print(path)image_text =ha.read_image(path)imagetext_np = ha.himage_as_numpy_array(image_text)image_marks_np = ha.himage_as_numpy_array(image_marks)return imagetext_np,image_marks_np,dataset = MyDataset(path0)
print(dataset.__len__())
text,marks =dataset.__getitem__(0)
print('text',text)
print('marks',marks)