C++でOpenCVを使った時にハマったこと

PyTorchと併用した際の undefined reference to cv::imread

undefined referenceは、リンクすべきライブラリをリンクし忘れている場合に発生するエラーですが、今回はきちんとリンクしているのにエラーが消えませんでした。

自分の場合は、PyTorchの(cxx11 ABI)を使うようにしたら解決しました。例えば以下のようなリンクです。

https://download.pytorch.org/libtorch/cpu/libtorch-cxx11-abi-shared-with-deps-1.11.0%2Bcpu.zip

その他の場合は、OpenCVのissueなどで紹介されている方法が参考になるかもしれません。

PyTorch Forumでも同様の現象について投稿されていました。

謎のsegmentation fault

以下のような関数ではSegmentation faultが発生する場合があるようです。

cv::Mat loadImage(std::string image_path)
{
  cv::Mat image = cv::imread(image_path);
  return image;
}

以下のように修正すると改善します。

cv::Mat loadImage(std::string image_path)
{
  cv::Mat image = cv::imread(image_path);
  return image.clone();
}

参考:stack overflow

この記事は役に立ちましたか?

もし参考になりましたら、下記のボタンで教えてください。

関連記事

コメント

この記事へのコメントはありません。

CAPTCHA