Index Error: invalid index to scalar variable
Index Error: invalid index to scalar variable
出于某种原因,我正在尝试使用 this 数据集中的检测注释中提到的尺寸创建边界框(我正在使用 polyterrasse 之一)以下代码适用于 25 帧,然后突然它给了我一个错误:
IndexError: invalid index to scalar variable.
frame_path=glob.glob("path/to/pointcloud/folder/*.ezd")
bbox_path= glob.glob("path/to/detection/annotation/folder/*.ezd.bbox")
bbox=[]
cbox_dim=[]
for i in range(len(bbox_path)):
#convert the frame into pcd format and then load via PCL
bbox=np.loadtxt(bbox_path[i], dtype=np.float32) # load tracklets for the frame
if bbox.size==0:
continue
cbox_dim=np.asarray(bbox)
pc= pcl.PointCloud() #create pointcloud
pc.from_array(obj) #load frame into the point cloud
clipper=pc.make_cropbox()
for j in range(len(cbox_dim)):
tx = cbox_dim[j][0] #Error occurs: Invalid index to scalar variable
ty = cbox_dim[j][1]
tz = cbox_dim[j][2]
#similarly set rotation and dimensions
这可能是什么原因?
我下载了数据,解压了,检查了一下,原来文件polyterrasse026.ezd.bbox
只有1行数据:
1.718750 5.066964 -0.327395 0.693458 0.684387 1.325830 0 0 0 0
这就是为什么 bbox_path[26]
是一维数组。这就是您收到错误的原因。
编辑。
要验证 bbox
是否为二维数组,您可以使用,例如 bbox.ndim == 2
。 bbox.size
显示数组中元素的数量而不是维数。
你的问题的本质是 np.loadtxt()
returns 一维数组,如果文件只包含一行数据。你可以这样处理这个问题:
if bbox.ndim == 1:
bbox = np.array([bbox])
出于某种原因,我正在尝试使用 this 数据集中的检测注释中提到的尺寸创建边界框(我正在使用 polyterrasse 之一)以下代码适用于 25 帧,然后突然它给了我一个错误:
IndexError: invalid index to scalar variable.
frame_path=glob.glob("path/to/pointcloud/folder/*.ezd")
bbox_path= glob.glob("path/to/detection/annotation/folder/*.ezd.bbox")
bbox=[]
cbox_dim=[]
for i in range(len(bbox_path)):
#convert the frame into pcd format and then load via PCL
bbox=np.loadtxt(bbox_path[i], dtype=np.float32) # load tracklets for the frame
if bbox.size==0:
continue
cbox_dim=np.asarray(bbox)
pc= pcl.PointCloud() #create pointcloud
pc.from_array(obj) #load frame into the point cloud
clipper=pc.make_cropbox()
for j in range(len(cbox_dim)):
tx = cbox_dim[j][0] #Error occurs: Invalid index to scalar variable
ty = cbox_dim[j][1]
tz = cbox_dim[j][2]
#similarly set rotation and dimensions
这可能是什么原因?
我下载了数据,解压了,检查了一下,原来文件polyterrasse026.ezd.bbox
只有1行数据:
1.718750 5.066964 -0.327395 0.693458 0.684387 1.325830 0 0 0 0
这就是为什么 bbox_path[26]
是一维数组。这就是您收到错误的原因。
编辑。
要验证 bbox
是否为二维数组,您可以使用,例如 bbox.ndim == 2
。 bbox.size
显示数组中元素的数量而不是维数。
你的问题的本质是 np.loadtxt()
returns 一维数组,如果文件只包含一行数据。你可以这样处理这个问题:
if bbox.ndim == 1:
bbox = np.array([bbox])