如何从 cv::Mat(在 C++ 中)转换为 tf.placeholder(在 C++ 中 Boost.Python)?

How can I transform from cv::Mat (in C++) to tf.placeholder(in C++ Boost.Python)?

我正在研究C++ BoostPython,但是我有一个关于转换图像数据类型的问题。

  1. 从英特尔实感相机 SR300 接收深度图像。
  2. depthImage数据类型=cv::Mat(这​​是opencv在C++中的imageformat)
  3. 我想把这个 cv::Mat 类型的图像放在 Boost.Python 的 tf.placeholder 中,C++。

我该怎么做?请...

下面的代码可以工作,我不确定这是最好的方法,但这就是我设法让 tensroflow 为我工作的方法。

void* object = (void*)resized.ptr() ;
int64_t* dims; //set dims
//C API
TF_Tensor* tftensor = TF_NewTensor(TF_DataType::TF_FLOAT, dims, nDims, object, data_size, &deallocator, 0);

//C++ API
tensorflow::Tensor input_tensor(tensorflow::DT_FLOAT, tensorflow::TensorShape({ batch_size, objectHeight, objectWidth, objectChannels }));
int data_size = objectHeight * objectWidth * objectChannels * batch_size * sizeof(float);
std::copy_n((float*)object, data_size, (input_tensor.flat<float>()).data());