****加粗样式虽然啰嗦一点,但好歹halcon自己熟悉,不会忘记,用os 和 pil会导致脑子记得东西太多
import halcon as ha
import torch
from torch.utils.data import Dataset
path0 = r'E:\BaiduNetdiskDownload\cell'
class MyDataset(Dataset):
def __init__(self, path0):
self.path = path0
self.image_files = ha.list_files(path0 + '\masks','files')
def __len__(self):
number= ha.tuple_length(self.image_files)
return number
def __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)