PyTorch C++ FrontendでTensor <-> cv::Matの相互変換

PyTorchのC++ APIであるLibTorchのTensorOpencvの行列を相互変換する方法.

torch::Tensor -> cv::Mat

  • torch::Tensorをcv::Matに変換する例
  • 例えば,128x128の1ch行列を変換するには以下のようにする.
cv::Mat mat(128,128, CV_32FC1, tensor. template data<float>());

cv::Mat -> torch::Tensor

  • cv::Matをtorch::Tensorに変換する例
  • torch::from_brobの第二引数には行列のshapeを渡す
std::vector<int64_t>shape = {1, height, width};
torch::Tensor tensor = torch::from_blob(mat.data, at::IntList(shape), at::ScalarType::Byte);