正如标题中所述,我目前有一些从OpenCV读取的2D图像数据,我需要将尺寸更改为4D。例如,将维度[320, 720]
设置为[1, 320, 720, 1]
,然后将整个数据制作为单个4D矩阵。
在Python中,我可以为每个图像分别numpy.expand_dims()
,然后numpy.concatenate()
在一起。我想知道是否可以在C ++中使用某些等效的API。我在expand_dims()
中找到了Tensorflow
,但是它仅适用于张量,而对于concatenate()
我还没有找到任何东西。
欢迎使用OpenCV
,Tensorflow
,Boost
之类的库。但是我想减轻负担,所以如果我自己实现(如果不太复杂的话)会更好。预先谢谢你。
答案 0 :(得分:0)
expand_dims
加上concatenate
,可以用一种更具迭代性的语言编写为:
In [107]: x = np.arange(12).reshape(3,4)
In [109]: y = np.zeros((2,3,4,3),dtype=int)
In [110]: for i in range(2):
...: for j in range(3):
...: y[i,:,:,j] = x
...:
In [111]: y
Out[111]:
array([[[[ 0, 0, 0],
[ 1, 1, 1],
[ 2, 2, 2],
[ 3, 3, 3]],
[[ 4, 4, 4],
[ 5, 5, 5],
....
[10, 10, 10],
[11, 11, 11]]]])
换句话说,您所需要的就是创建合适大小的目标数组的能力,以及将2d数组复制到适当插槽中的能力。