相当于numpy.expand_dims()和numpy.concatenate()的C ++

时间:2018-08-02 19:08:59

标签: python c++ numpy opencv

正如标题中所述,我目前有一些从OpenCV读取的2D图像数据,我需要将尺寸更改为4D。例如,将维度[320, 720]设置为[1, 320, 720, 1],然后将整个数据制作为单个4D矩阵。

在Python中,我可以为每个图像分别numpy.expand_dims(),然后numpy.concatenate()在一起。我想知道是否可以在C ++中使用某些等效的API。我在expand_dims()中找到了Tensorflow,但是它仅适用于张量,而对于concatenate()我还没有找到任何东西。

欢迎使用OpenCVTensorflowBoost之类的库。但是我想减轻负担,所以如果我自己实现(如果不太复杂的话)会更好。预先谢谢你。

1 个答案:

答案 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数组复制到适当插槽中的能力。