8#include <nlohmann/json.hpp>
9#include <opencv2/core.hpp>
11NLOHMANN_JSON_NAMESPACE_BEGIN
13template <
typename T,
int Cn>
14struct adl_serializer<cv::Vec<T, Cn>> {
15 template <
class JsonT>
17 static void to_json(JsonT& j,
const cv::Vec<T, Cn>& v)
19 for (
int i = 0; i < Cn; i++) {
24 template <
class JsonT>
26 static void from_json(
const JsonT& j, cv::Vec<T, Cn>& v)
28 for (
int i = 0; i < Cn; i++) {
29 v[i] = j.at(i).template get<T>();
36struct adl_serializer<cv::Mat_<T>> {
37 template <
class JsonT>
39 static void to_json(JsonT& j,
const cv::Mat_<T>& m)
41 for (
int r = 0; r < m.rows; r++) {
43 for (
int c = 0; c < m.cols; c++) {
44 row.push_back(m(r, c));
50 template <
class JsonT>
52 static void from_json(
const JsonT& j, cv::Mat_<T>& m)
55 auto cols = j[0].size();
56 m = cv::Mat_<T>(rows, cols);
57 for (
int r = 0; r < m.rows; r++) {
58 for (
int c = 0; c < m.cols; c++) {
66template <
typename T,
int M,
int N>
67struct adl_serializer<cv::Matx<T, M, N>> {
68 template <
class JsonT>
70 static void to_json(JsonT& j,
const cv::Matx<T, M, N>& mat)
72 for (
int r = 0; r < M; r++) {
74 for (
int c = 0; c < N; c++) {
75 row.push_back(mat(r, c));
81 template <
class JsonT>
83 static void from_json(
const JsonT& j, cv::Matx<T, M, N>& mat)
85 for (
int r = 0; r < M; r++) {
86 for (
int c = 0; c < N; c++) {
92NLOHMANN_JSON_NAMESPACE_END