ここで説明されているように、OpenCV Mat 形式のシリアル化を実装しました: Serializing OpenCV Mat_<Vec3f>
cv::Mat への共有ポインターをシリアル化する問題が発生しました。次のエラーが発生します。
/usr/include/boost/serialization/shared_ptr.hpp: In function ‘void boost::serialization::serialize(Archive&, boost::shared_ptr<U>&, unsigned int) [with Archive = boost::archive::text_iarchive, T = boost::shared_ptr<cv::Mat>]’:
/usr/include/boost/serialization/serialization.hpp:128:9
:
'void >boost::serialization::serialize_adl(Archive&, T&, unsigned int) [with Archive = >boost::archive::text_iarchive, T = boost::shared_ptr >]' /usr/include/boost/archive からインスタンス化/detail/iserializer.hpp:188:5:
'void >boost::archive::detail::iserializer::load_object_data(boost::archive::detail::basic_iarchive&, void*, unsigned int) からインスタンス化された const [with Archive = boost::archive::text_iarchive, T = boost::shared_ptr >]' registration2d3d.cpp:227:1: ここからインスタンス化
/usr/include/boost/serialization/shared_ptr.hpp:167:5: エラー: 静的アサーションが失敗しました: "boost::serialization::tracking_level< T >::value != boost::serialization::track_never"`
BOOST_CLASS_TRACKING を使用しようとしましたが、機能しませんでした。実際、私は問題が何であるかをよく理解していません。ブーストのドキュメントを読んでも、この問題の解決には役立ちませんでした。