Skip to content
Snippets Groups Projects

feature/facedetect

Merged Sebastian Hahta requested to merge feature/facedetect into master
9 files
+ 369
107
Compare changes
  • Side-by-side
  • Inline
Files
9
@@ -13,12 +13,12 @@ MSGPACK_API_VERSION_NAMESPACE(MSGPACK_DEFAULT_API_NS) {
namespace adaptor {
////////////////////////////////////////////////////////////////////////////////
// cv::Size
// cv::Size_<T>
template<>
struct pack<cv::Size> {
template<typename T>
struct pack<cv::Size_<T>> {
template <typename Stream>
packer<Stream>& operator()(msgpack::packer<Stream>& o, cv::Size const& v) const {
packer<Stream>& operator()(msgpack::packer<Stream>& o, cv::Size_<T> const& v) const {
o.pack_array(2);
o.pack(v.width);
@@ -28,22 +28,22 @@ struct pack<cv::Size> {
}
};
template<>
struct convert<cv::Size> {
msgpack::object const& operator()(msgpack::object const& o, cv::Size& v) const {
template<typename T>
struct convert<cv::Size_<T>> {
msgpack::object const& operator()(msgpack::object const& o, cv::Size_<T>& v) const {
if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
if (o.via.array.size != 2) { throw msgpack::type_error(); }
int width = o.via.array.ptr[0].as<int>();
int height = o.via.array.ptr[1].as<int>();
v = cv::Size(width, height);
T width = o.via.array.ptr[0].as<T>();
T height = o.via.array.ptr[1].as<T>();
v = cv::Size_<T>(width, height);
return o;
}
};
template <>
struct object_with_zone<cv::Size> {
void operator()(msgpack::object::with_zone& o, cv::Size const& v) const {
template <typename T>
struct object_with_zone<cv::Size_<T>> {
void operator()(msgpack::object::with_zone& o, cv::Size_<T> const& v) const {
o.type = type::ARRAY;
o.via.array.size = 2;
o.via.array.ptr = static_cast<msgpack::object*>(
@@ -55,6 +55,56 @@ struct object_with_zone<cv::Size> {
}
};
////////////////////////////////////////////////////////////////////////////////
// cv::Rect_<T>
template<typename T>
struct pack<cv::Rect_<T>> {
template <typename Stream>
packer<Stream>& operator()(msgpack::packer<Stream>& o, cv::Rect_<T> const& v) const {
o.pack_array(4);
o.pack(v.height);
o.pack(v.width);
o.pack(v.x);
o.pack(v.y);
return o;
}
};
template<typename T>
struct convert<cv::Rect_<T>> {
msgpack::object const& operator()(msgpack::object const& o, cv::Rect_<T> &v) const {
if (o.type != msgpack::type::ARRAY) { throw msgpack::type_error(); }
if (o.via.array.size != 4) { throw msgpack::type_error(); }
T height = o.via.array.ptr[0].as<T>();
T width = o.via.array.ptr[1].as<T>();
T x = o.via.array.ptr[2].as<T>();
T y = o.via.array.ptr[3].as<T>();
v = cv::Rect_<T>(x, y, width, height);
return o;
}
};
template <typename T>
struct object_with_zone<cv::Rect_<T>> {
void operator()(msgpack::object::with_zone& o, cv::Rect_<T> const& v) const {
o.type = type::ARRAY;
o.via.array.size = 4;
o.via.array.ptr = static_cast<msgpack::object*>(
o.zone.allocate_align( sizeof(msgpack::object) * o.via.array.size,
MSGPACK_ZONE_ALIGNOF(msgpack::object)));
o.via.array.ptr[0] = msgpack::object(v.heigth, o.zone);
o.via.array.ptr[1] = msgpack::object(v.width, o.zone);
o.via.array.ptr[2] = msgpack::object(v.x, o.zone);
o.via.array.ptr[3] = msgpack::object(v.y, o.zone);
}
};
////////////////////////////////////////////////////////////////////////////////
// cv::Mat
@@ -118,7 +168,6 @@ struct object_with_zone<cv::Mat> {
}
};
}
}
}
Loading