我试图从包含类成员但不在类本身的数组中创建类属性的连接列表。
class Direction:
def __init__(self, array, dir_name):
self.array = array
self.dir_name = dir_name
这使我能够创建四个类成员,比如L,R,U,D代表方向,数组是图像数组(openCV),dir_name是字母,即L.dir_name =' L& #39;,对于' R',' U',' D'。
然后我使用自定义函数生成一系列方向,并将它们放入一个名为Arr_Seq的数组中,该数组只是一个数组,而不是该类的成员。所以Arr_Seq包含一些随机的LRUD方向序列,它们是具有两个属性的类对象
我想使用适当的文件名保存这些序列,所以我需要生成一个表示生成序列的字符串。
ns = 10
ArrSequence = [0]*ns
for i in range(ns):
Arr_Seq = get_arrow_seq(6)
if i<2:
ArrSequence[i] = np.hstack(Arr_Seq)
elif np.hstack(Arr_Seq) not in [ArrSequence]:
ArrSequence[i] = np.hstack(Arr_Seq)
else:
i = i-1
cv2.imwrite('ArrSeq_' + str(i) + '.png', ArrSequence[i])
上面的代码生成我的图像序列,但保存它们像ArrSeq_0,ArrSeq_1等...没用,因为我不能识别哪个文件是这样的。我希望能够将文件保存为LLRUD,RRUDL等,这样它们才有意义。我认为使用该类可以让我这样做,但我不确定如何从Arr_Seq中的元素中提取dir_name,或者如何使用该潜在字符串来适当地保存文件。
任何帮助表示赞赏!
答案 0 :(得分:0)
我通过将每个方向分配给类,然后使用适当的标识符来调用所需的部分来解决这个问题。
class Direction:
def __init__(self, array, dir_name):
self.array = array
self.dir_name = dir_name
L = Direction(L, 'L')
R = Direction(R, 'R')
U = Direction(U, 'U')
D = Direction(D, 'D')
Arrow_Array = [L.array, R.array, U.array, D.array]
然后使用(很可能是低效的)if语句集来生成描述序列的字母:
num_seq = 2910
ArrSequence = [0]*num_seq
for i in range(num_seq):
name = []
Arr_Seq = get_arrow_seq(6)
for i in range(len(Arr_Seq)):
if (Arr_Seq[i] == L.array).all():
name.append('L')
elif (Arr_Seq[i] == R.array).all():
name.append('R')
elif (Arr_Seq[i] == U.array).all():
name.append('U')
elif (Arr_Seq[i] == D.array).all():
name.append('D')
else:
name.append(0)
if i<2:
ArrSequence[i] = np.hstack(Arr_Seq)
elif np.hstack(Arr_Seq) not in [ArrSequence]:
ArrSequence[i] = np.hstack(Arr_Seq)
else:
i = i-1
cv2.imwrite(''.join(name) + '.png', ArrSequence[i])