Importar OpenCV Mat para C ++ Tensorflow sem copiar

Meu objetivo é executar um modelo TensorFlow em tempo real para controlar um veículo a partir de um modelo aprendido. Nosso sistema de veículo usa ROS (Robot Operating System), que está intimamente ligado ao OpenCV. Então, recebo um OpenCV Mat contendo a imagem de interesse do ROS.

    cv::Mat cameraImg;

Eu gostaria de criar um Tensorflow Tensor diretamente a partir dos dados nessa matriz OpenCV para evitar a despesa de copiar a matriz linha por linha. Usando a resposta paraEssa questão Consegui fazer com que o encaminhamento da rede funcionasse com o seguinte código:

cameraImg.convertTo(cameraImg, CV_32FC3);

Tensor inputImg(DT_FLOAT, TensorShape({1,inputheight,inputwidth,3}));
auto inputImageMapped = inputImg.tensor<float, 4>();
auto start = std::chrono::system_clock::now();
//Copy all the data over
for (int y = 0; y < inputheight; ++y) {
    const float* source_row = ((float*)cameraImg.data) + (y * inputwidth * 3);
    for (int x = 0; x < inputwidth; ++x) {
        const float* source_pixel = source_row + (x * 3);
        inputImageMapped(0, y, x, 0) = source_pixel[2];
        inputImageMapped(0, y, x, 1) = source_pixel[1];
        inputImageMapped(0, y, x, 2) = source_pixel[0];
    }
}
auto end = std::chrono::system_clock::now();

No entanto, usando esse método, a cópia no tensor leva entre 80ms e 130ms, enquanto a passagem direta inteira (para uma rede convolucional de 10 camadas) leva apenas 25ms.

Olhando paraa documentação do tensorflow, parece que há um construtor Tensor que aceita um alocador. No entanto, não consegui encontrar nenhuma documentação do Tensorflow ou Eigen relacionada a essa funcionalidade ou aoClasse Eigen Map&nbsp;no que se refere aos tensores.

Alguém tem alguma idéia de como esse código pode ser acelerado, de preferência reutilizando minha memória OpenCV?

EDITAR:&nbsp;Eu implementei com sucesso o que @mrry sugeriu e posso reutilizar a memória alocada pelo OpenCV. Eu abriedição 8033 do github&nbsp;solicitando que isso seja adicionado à árvore de origem tensorflow. Meu método não é tão bonito, mas funciona.

Ainda é muito difícil compilar uma biblioteca externa e vinculá-la à biblioteca libtensorflow.so. Potencialmente obiblioteca tensmaflow cmake&nbsp;vai ajudar com isso, eu ainda não tentei.