nndeploy C++ API  0.2.0
nndeploy C++ API
params.h
Go to the documentation of this file.
1 
2 #ifndef _NNDEPLOY_PREPROCESS_PARAMS_H_
3 #define _NNDEPLOY_PREPROCESS_PARAMS_H_
4 
5 #include "nndeploy/base/any.h"
6 #include "nndeploy/base/common.h"
8 #include "nndeploy/base/log.h"
9 #include "nndeploy/base/macro.h"
10 #include "nndeploy/base/object.h"
11 #include "nndeploy/base/param.h"
12 #include "nndeploy/base/status.h"
13 #include "nndeploy/base/string.h"
14 #include "nndeploy/base/type.h"
15 #include "nndeploy/device/buffer.h"
16 #include "nndeploy/device/device.h"
18 #include "nndeploy/device/tensor.h"
19 
20 namespace nndeploy {
21 namespace preprocess {
22 
35  public:
36  CvtcolorParam() : base::Param() {}
37  virtual ~CvtcolorParam() {}
38 
41 
44  rapidjson::Value& json,
45  rapidjson::Document::AllocatorType& allocator) override {
46  base::Status status = base::Param::serialize(json, allocator);
47  if (status != base::kStatusCodeOk) {
48  NNDEPLOY_LOGE("CvtcolorParam::serialize failed\n");
49  return status;
50  }
51  std::string src_pixel_type_str = base::pixelTypeToString(src_pixel_type_);
52  json.AddMember("src_pixel_type_",
53  rapidjson::Value(src_pixel_type_str.c_str(), allocator),
54  allocator);
55  std::string dst_pixel_type_str = base::pixelTypeToString(dst_pixel_type_);
56  json.AddMember("dst_pixel_type_",
57  rapidjson::Value(dst_pixel_type_str.c_str(), allocator),
58  allocator);
59  return base::kStatusCodeOk;
60  }
62  virtual base::Status deserialize(rapidjson::Value& json) override {
64  if (status != base::kStatusCodeOk) {
65  NNDEPLOY_LOGE("CvtcolorParam::deserialize failed\n");
66  return status;
67  }
68  if (json.HasMember("src_pixel_type_") &&
69  json["src_pixel_type_"].IsString()) {
70  src_pixel_type_ =
71  base::stringToPixelType(json["src_pixel_type_"].GetString());
72  }
73  if (json.HasMember("dst_pixel_type_") &&
74  json["dst_pixel_type_"].IsString()) {
75  dst_pixel_type_ =
76  base::stringToPixelType(json["dst_pixel_type_"].GetString());
77  }
78  return base::kStatusCodeOk;
79  }
80 };
81 
83  public:
84  CropParam() : base::Param() {}
85  virtual ~CropParam() {}
86 
87  int top_left_x_ = 0;
88  int top_left_y_ = 0;
89  int width_ = 0;
90  int height_ = 0;
91 
94  rapidjson::Value& json,
95  rapidjson::Document::AllocatorType& allocator) override {
96  base::Status status = base::Param::serialize(json, allocator);
97  if (status != base::kStatusCodeOk) {
98  NNDEPLOY_LOGE("CropParam::serialize failed\n");
99  return status;
100  }
101  json.AddMember("top_left_x_", top_left_x_, allocator);
102  json.AddMember("top_left_y_", top_left_y_, allocator);
103  json.AddMember("width_", width_, allocator);
104  json.AddMember("height_", height_, allocator);
105  return base::kStatusCodeOk;
106  }
107 
109  virtual base::Status deserialize(rapidjson::Value& json) override {
110  base::Status status = base::Param::deserialize(json);
111  if (status != base::kStatusCodeOk) {
112  NNDEPLOY_LOGE("CropParam::deserialize failed\n");
113  return status;
114  }
115  if (json.HasMember("top_left_x_") && json["top_left_x_"].IsInt()) {
116  top_left_x_ = json["top_left_x_"].GetInt();
117  }
118  if (json.HasMember("top_left_y_") && json["top_left_y_"].IsInt()) {
119  top_left_y_ = json["top_left_y_"].GetInt();
120  }
121  if (json.HasMember("width_") && json["width_"].IsInt()) {
122  width_ = json["width_"].GetInt();
123  }
124  if (json.HasMember("height_") && json["height_"].IsInt()) {
125  height_ = json["height_"].GetInt();
126  }
127  return base::kStatusCodeOk;
128  }
129 };
130 
132  public:
133  NormlizeParam() : base::Param() {}
134  virtual ~NormlizeParam() {}
135 
136  float scale_[4] = {1.0f / 255.0f, 1.0f / 255.0f, 1.0f / 255.0f,
137  1.0f / 255.0f};
138  float mean_[4] = {0.0f, 0.0f, 0.0f, 0.0f};
139  float std_[4] = {1.0f, 1.0f, 1.0f, 1.0f};
140 
143  rapidjson::Value& json,
144  rapidjson::Document::AllocatorType& allocator) override {
145  base::Status status = base::Param::serialize(json, allocator);
146  if (status != base::kStatusCodeOk) {
147  NNDEPLOY_LOGE("NormlizeParam::serialize failed\n");
148  return status;
149  }
150  rapidjson::Value scale_array(rapidjson::kArrayType);
151  rapidjson::Value mean_array(rapidjson::kArrayType);
152  rapidjson::Value std_array(rapidjson::kArrayType);
153  for (int i = 0; i < 4; i++) {
154  scale_array.PushBack(scale_[i], allocator);
155  mean_array.PushBack(mean_[i], allocator);
156  std_array.PushBack(std_[i], allocator);
157  }
158  json.AddMember("scale_", scale_array, allocator);
159  json.AddMember("mean_", mean_array, allocator);
160  json.AddMember("std_", std_array, allocator);
161  return base::kStatusCodeOk;
162  }
163 
165  virtual base::Status deserialize(rapidjson::Value& json) override {
166  base::Status status = base::Param::deserialize(json);
167  if (status != base::kStatusCodeOk) {
168  NNDEPLOY_LOGE("NormlizeParam::deserialize failed\n");
169  return status;
170  }
171  if (json.HasMember("scale_") && json["scale_"].IsArray()) {
172  const rapidjson::Value& scale_array = json["scale_"];
173  for (int i = 0; i < 4 && i < scale_array.Size(); i++) {
174  if (scale_array[i].IsFloat()) {
175  scale_[i] = scale_array[i].GetFloat();
176  }
177  }
178  }
179  if (json.HasMember("mean_") && json["mean_"].IsArray()) {
180  const rapidjson::Value& mean_array = json["mean_"];
181  for (int i = 0; i < 4 && i < mean_array.Size(); i++) {
182  if (mean_array[i].IsFloat()) {
183  mean_[i] = mean_array[i].GetFloat();
184  }
185  }
186  }
187  if (json.HasMember("std_") && json["std_"].IsArray()) {
188  const rapidjson::Value& std_array = json["std_"];
189  for (int i = 0; i < 4 && i < std_array.Size(); i++) {
190  if (std_array[i].IsFloat()) {
191  std_[i] = std_array[i].GetFloat();
192  }
193  }
194  }
195  return base::kStatusCodeOk;
196  }
197 };
198 
200  public:
201  TransposeParam() : base::Param() {}
202  virtual ~TransposeParam() {}
203 
206 
209  rapidjson::Value& json,
210  rapidjson::Document::AllocatorType& allocator) override {
211  base::Status status = base::Param::serialize(json, allocator);
212  if (status != base::kStatusCodeOk) {
213  NNDEPLOY_LOGE("TransposeParam::serialize failed\n");
214  return status;
215  }
216  std::string src_data_format_str =
217  base::dataFormatToString(src_data_format_);
218  json.AddMember("src_data_format_",
219  rapidjson::Value(src_data_format_str.c_str(), allocator),
220  allocator);
221  std::string dst_data_format_str =
222  base::dataFormatToString(dst_data_format_);
223  json.AddMember("dst_data_format_",
224  rapidjson::Value(dst_data_format_str.c_str(), allocator),
225  allocator);
226  return base::kStatusCodeOk;
227  }
228 
230  virtual base::Status deserialize(rapidjson::Value& json) override {
231  base::Status status = base::Param::deserialize(json);
232  if (status != base::kStatusCodeOk) {
233  NNDEPLOY_LOGE("TransposeParam::deserialize failed\n");
234  return status;
235  }
236  if (json.HasMember("src_data_format_") &&
237  json["src_data_format_"].IsString()) {
238  src_data_format_ =
239  base::stringToDataFormat(json["src_data_format_"].GetString());
240  }
241  if (json.HasMember("dst_data_format_") &&
242  json["dst_data_format_"].IsString()) {
243  dst_data_format_ =
244  base::stringToDataFormat(json["dst_data_format_"].GetString());
245  }
246  return base::kStatusCodeOk;
247  }
248 };
249 
251  public:
252  DynamicShapeParam() : base::Param() {}
253  virtual ~DynamicShapeParam() {}
254 
255  bool is_power_of_n_ = false;
256  int n_ = 2;
257  int w_align_ = 1;
258  int h_align_ = 1;
262 
265  rapidjson::Value& json,
266  rapidjson::Document::AllocatorType& allocator) override {
267  base::Status status = base::Param::serialize(json, allocator);
268  if (status != base::kStatusCodeOk) {
269  NNDEPLOY_LOGE("DynamicShapeParam::serialize failed\n");
270  return status;
271  }
272  json.AddMember("is_power_of_n_", is_power_of_n_, allocator);
273  json.AddMember("n_", n_, allocator);
274  json.AddMember("w_align_", w_align_, allocator);
275  json.AddMember("h_align_", h_align_, allocator);
276 
277  rapidjson::Value min_shape_array(rapidjson::kArrayType);
278  for (size_t i = 0; i < min_shape_.size(); i++) {
279  min_shape_array.PushBack(min_shape_[i], allocator);
280  }
281  json.AddMember("min_shape_", min_shape_array, allocator);
282 
283  rapidjson::Value opt_shape_array(rapidjson::kArrayType);
284  for (size_t i = 0; i < opt_shape_.size(); i++) {
285  opt_shape_array.PushBack(opt_shape_[i], allocator);
286  }
287  json.AddMember("opt_shape_", opt_shape_array, allocator);
288 
289  rapidjson::Value max_shape_array(rapidjson::kArrayType);
290  for (size_t i = 0; i < max_shape_.size(); i++) {
291  max_shape_array.PushBack(max_shape_[i], allocator);
292  }
293  json.AddMember("max_shape_", max_shape_array, allocator);
294 
295  return base::kStatusCodeOk;
296  }
297 
299  virtual base::Status deserialize(rapidjson::Value& json) override {
300  base::Status status = base::Param::deserialize(json);
301  if (status != base::kStatusCodeOk) {
302  NNDEPLOY_LOGE("DynamicShapeParam::deserialize failed\n");
303  return status;
304  }
305  if (json.HasMember("is_power_of_n_") && json["is_power_of_n_"].IsBool()) {
306  is_power_of_n_ = json["is_power_of_n_"].GetBool();
307  }
308  if (json.HasMember("n_") && json["n_"].IsInt()) {
309  n_ = json["n_"].GetInt();
310  }
311  if (json.HasMember("w_align_") && json["w_align_"].IsInt()) {
312  w_align_ = json["w_align_"].GetInt();
313  }
314  if (json.HasMember("h_align_") && json["h_align_"].IsInt()) {
315  h_align_ = json["h_align_"].GetInt();
316  }
317 
318  if (json.HasMember("min_shape_") && json["min_shape_"].IsArray()) {
319  const rapidjson::Value& min_shape_array = json["min_shape_"];
320  min_shape_.clear();
321  for (size_t i = 0; i < min_shape_array.Size(); i++) {
322  if (min_shape_array[i].IsInt()) {
323  min_shape_.push_back(min_shape_array[i].GetInt());
324  }
325  }
326  }
327 
328  if (json.HasMember("opt_shape_") && json["opt_shape_"].IsArray()) {
329  const rapidjson::Value& opt_shape_array = json["opt_shape_"];
330  opt_shape_.clear();
331  for (size_t i = 0; i < opt_shape_array.Size(); i++) {
332  if (opt_shape_array[i].IsInt()) {
333  opt_shape_.push_back(opt_shape_array[i].GetInt());
334  }
335  }
336  }
337 
338  if (json.HasMember("max_shape_") && json["max_shape_"].IsArray()) {
339  const rapidjson::Value& max_shape_array = json["max_shape_"];
340  max_shape_.clear();
341  for (size_t i = 0; i < max_shape_array.Size(); i++) {
342  if (max_shape_array[i].IsInt()) {
343  max_shape_.push_back(max_shape_array[i].GetInt());
344  }
345  }
346  }
347 
348  return base::kStatusCodeOk;
349  }
350 };
351 
353  public:
354  ResizeParam() : base::Param() {}
355  virtual ~ResizeParam() {}
356 
358  float scale_w_ = 0.0f;
359  float scale_h_ = 0.0f;
360  int dst_h_ = -1;
361  int dst_w_ = -1;
364  rapidjson::Value& json,
365  rapidjson::Document::AllocatorType& allocator) override {
366  this->addRequiredParam("dst_h_");
367  this->addRequiredParam("dst_w_");
368  base::Status status = base::Param::serialize(json, allocator);
369  if (status != base::kStatusCodeOk) {
370  NNDEPLOY_LOGE("ResizeParam::serialize failed\n");
371  return status;
372  }
373  std::string interp_type_str = base::interpTypeToString(interp_type_);
374  json.AddMember("interp_type_",
375  rapidjson::Value(interp_type_str.c_str(), allocator),
376  allocator);
377  json.AddMember("scale_w_", scale_w_, allocator);
378  json.AddMember("scale_h_", scale_h_, allocator);
379  json.AddMember("dst_h_", dst_h_, allocator);
380  json.AddMember("dst_w_", dst_w_, allocator);
381  return base::kStatusCodeOk;
382  }
384  virtual base::Status deserialize(rapidjson::Value& json) override {
385  base::Status status = base::Param::deserialize(json);
386  if (status != base::kStatusCodeOk) {
387  NNDEPLOY_LOGE("ResizeParam::deserialize failed\n");
388  return status;
389  }
390  if (json.HasMember("interp_type_") && json["interp_type_"].IsString()) {
391  interp_type_ = base::stringToInterpType(json["interp_type_"].GetString());
392  }
393  if (json.HasMember("scale_w_") && json["scale_w_"].IsFloat()) {
394  scale_w_ = json["scale_w_"].GetFloat();
395  }
396  if (json.HasMember("scale_h_") && json["scale_h_"].IsFloat()) {
397  scale_h_ = json["scale_h_"].GetFloat();
398  }
399  if (json.HasMember("dst_h_") && json["dst_h_"].IsInt()) {
400  dst_h_ = json["dst_h_"].GetInt();
401  }
402  if (json.HasMember("dst_w_") && json["dst_w_"].IsInt()) {
403  dst_w_ = json["dst_w_"].GetInt();
404  }
405  return base::kStatusCodeOk;
406  }
407 };
408 
410  public:
411  PaddingParam() : base::Param() {}
412  virtual ~PaddingParam() {}
413 
415  int top_ = 0;
416  int bottom_ = 0;
417  int left_ = 0;
418  int right_ = 0;
419  base::Scalar2d border_val_ = 0.0;
422  rapidjson::Value& json,
423  rapidjson::Document::AllocatorType& allocator) override {
424  base::Status status = base::Param::serialize(json, allocator);
425  if (status != base::kStatusCodeOk) {
426  NNDEPLOY_LOGE("PaddingParam::serialize failed\n");
427  return status;
428  }
429  std::string border_type_str = base::borderTypeToString(border_type_);
430  json.AddMember("border_type_",
431  rapidjson::Value(border_type_str.c_str(), allocator),
432  allocator);
433  json.AddMember("top_", top_, allocator);
434  json.AddMember("bottom_", bottom_, allocator);
435  json.AddMember("left_", left_, allocator);
436  json.AddMember("right_", right_, allocator);
437  //
438  rapidjson::Value border_val_array(rapidjson::kArrayType);
439  for (int i = 0; i < 4; i++) {
440  border_val_array.PushBack(border_val_.val_[i], allocator);
441  }
442  json.AddMember("border_val_", border_val_array, allocator);
443  return base::kStatusCodeOk;
444  }
446  virtual base::Status deserialize(rapidjson::Value& json) override {
447  base::Status status = base::Param::deserialize(json);
448  if (status != base::kStatusCodeOk) {
449  NNDEPLOY_LOGE("PaddingParam::deserialize failed\n");
450  return status;
451  }
452  if (json.HasMember("border_type_") && json["border_type_"].IsString()) {
453  border_type_ = base::stringToBorderType(json["border_type_"].GetString());
454  }
455  if (json.HasMember("top_") && json["top_"].IsInt()) {
456  top_ = json["top_"].GetInt();
457  }
458  if (json.HasMember("bottom_") && json["bottom_"].IsInt()) {
459  bottom_ = json["bottom_"].GetInt();
460  }
461  if (json.HasMember("left_") && json["left_"].IsInt()) {
462  left_ = json["left_"].GetInt();
463  }
464  if (json.HasMember("right_") && json["right_"].IsInt()) {
465  right_ = json["right_"].GetInt();
466  }
467  if (json.HasMember("border_val_") && json["border_val_"].IsArray()) {
468  const rapidjson::Value& border_val_array = json["border_val_"];
469  for (int i = 0; i < 4 && i < border_val_array.Size(); i++) {
470  if (border_val_array[i].IsFloat()) {
471  border_val_.val_[i] = (double)border_val_array[i].GetFloat();
472  } else if (border_val_array[i].IsDouble()) {
473  border_val_.val_[i] = (double)border_val_array[i].IsDouble();
474  }
475  }
476  }
477  return base::kStatusCodeOk;
478  }
479 };
480 
486  public:
487  WarpAffineCvtNormTransParam() : base::Param() {}
489 
490  float transform_[2][3] = {{1.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}};
491  int dst_w_ = -1;
492  int dst_h_ = -1;
493 
498  int h_ = -1;
499  int w_ = -1;
500  bool normalize_ = true;
501  float scale_[4] = {1.0f / 255.0f, 1.0f / 255.0f, 1.0f / 255.0f,
502  1.0f / 255.0f};
503  float mean_[4] = {0.0f, 0.0f, 0.0f, 0.0f};
504  float std_[4] = {1.0f, 1.0f, 1.0f, 1.0f};
505  int const_value_ = 114;
506 
509  base::Scalar2d border_val_ = 0.0f;
510 
513  rapidjson::Value& json,
514  rapidjson::Document::AllocatorType& allocator) override {
515  this->addRequiredParam("transform_");
516  this->addRequiredParam("dst_w_");
517  this->addRequiredParam("dst_h_");
518  this->addRequiredParam("h_");
519  this->addRequiredParam("w_");
520  base::Status status = base::Param::serialize(json, allocator);
521  if (status != base::kStatusCodeOk) {
522  NNDEPLOY_LOGE("WarpAffineCvtNormTransParam::serialize failed\n");
523  return status;
524  }
525  // transform matrix
526  rapidjson::Value transform_array(rapidjson::kArrayType);
527  for (int i = 0; i < 2; i++) {
528  for (int j = 0; j < 3; j++) {
529  transform_array.PushBack(transform_[i][j], allocator);
530  }
531  }
532  json.AddMember("transform_", transform_array, allocator);
533 
534  json.AddMember("dst_w_", dst_w_, allocator);
535  json.AddMember("dst_h_", dst_h_, allocator);
536 
537  std::string src_pixel_type_str = base::pixelTypeToString(src_pixel_type_);
538  json.AddMember("src_pixel_type_",
539  rapidjson::Value(src_pixel_type_str.c_str(), allocator),
540  allocator);
541  std::string dst_pixel_type_str = base::pixelTypeToString(dst_pixel_type_);
542  json.AddMember("dst_pixel_type_",
543  rapidjson::Value(dst_pixel_type_str.c_str(), allocator),
544  allocator);
545 
546  std::string data_type_str = base::dataTypeToString(data_type_);
547  json.AddMember("data_type_",
548  rapidjson::Value(data_type_str.c_str(), allocator),
549  allocator);
550  std::string data_format_str = base::dataFormatToString(data_format_);
551  json.AddMember("data_format_",
552  rapidjson::Value(data_format_str.c_str(), allocator),
553  allocator);
554 
555  json.AddMember("h_", h_, allocator);
556  json.AddMember("w_", w_, allocator);
557  json.AddMember("normalize_", normalize_, allocator);
558  json.AddMember("const_value_", const_value_, allocator);
559 
560  // scale, mean, std arrays
561  rapidjson::Value scale_array(rapidjson::kArrayType);
562  rapidjson::Value mean_array(rapidjson::kArrayType);
563  rapidjson::Value std_array(rapidjson::kArrayType);
564  for (int i = 0; i < 4; i++) {
565  scale_array.PushBack(scale_[i], allocator);
566  mean_array.PushBack(mean_[i], allocator);
567  std_array.PushBack(std_[i], allocator);
568  }
569  json.AddMember("scale_", scale_array, allocator);
570  json.AddMember("mean_", mean_array, allocator);
571  json.AddMember("std_", std_array, allocator);
572 
573  std::string interp_type_str = base::interpTypeToString(interp_type_);
574  json.AddMember("interp_type_",
575  rapidjson::Value(interp_type_str.c_str(), allocator),
576  allocator);
577  std::string border_type_str = base::borderTypeToString(border_type_);
578  json.AddMember("border_type_",
579  rapidjson::Value(border_type_str.c_str(), allocator),
580  allocator);
581 
582  rapidjson::Value border_val_array(rapidjson::kArrayType);
583  for (int i = 0; i < 4; i++) {
584  border_val_array.PushBack(border_val_.val_[i], allocator);
585  }
586  json.AddMember("border_val_", border_val_array, allocator);
587 
588  return base::kStatusCodeOk;
589  }
590 
592  virtual base::Status deserialize(rapidjson::Value& json) override {
593  base::Status status = base::Param::deserialize(json);
594  if (status != base::kStatusCodeOk) {
595  NNDEPLOY_LOGE("WarpAffineCvtNormTransParam::deserialize failed\n");
596  return status;
597  }
598  if (json.HasMember("transform_") && json["transform_"].IsArray()) {
599  const rapidjson::Value& transform_array = json["transform_"];
600  int idx = 0;
601  for (int i = 0; i < 2; i++) {
602  for (int j = 0; j < 3; j++) {
603  if (transform_array[idx].IsFloat()) {
604  transform_[i][j] = transform_array[idx].GetFloat();
605  }
606  idx++;
607  }
608  }
609  }
610 
611  if (json.HasMember("dst_w_") && json["dst_w_"].IsInt()) {
612  dst_w_ = json["dst_w_"].GetInt();
613  }
614  if (json.HasMember("dst_h_") && json["dst_h_"].IsInt()) {
615  dst_h_ = json["dst_h_"].GetInt();
616  }
617 
618  if (json.HasMember("src_pixel_type_") &&
619  json["src_pixel_type_"].IsString()) {
620  src_pixel_type_ =
621  base::stringToPixelType(json["src_pixel_type_"].GetString());
622  }
623  if (json.HasMember("dst_pixel_type_") &&
624  json["dst_pixel_type_"].IsString()) {
625  dst_pixel_type_ =
626  base::stringToPixelType(json["dst_pixel_type_"].GetString());
627  }
628 
629  if (json.HasMember("data_type_") && json["data_type_"].IsString()) {
630  data_type_ = base::stringToDataType(json["data_type_"].GetString());
631  }
632  if (json.HasMember("data_format_") && json["data_format_"].IsString()) {
633  data_format_ = base::stringToDataFormat(json["data_format_"].GetString());
634  }
635 
636  if (json.HasMember("h_") && json["h_"].IsInt()) {
637  h_ = json["h_"].GetInt();
638  }
639  if (json.HasMember("w_") && json["w_"].IsInt()) {
640  w_ = json["w_"].GetInt();
641  }
642  if (json.HasMember("normalize_") && json["normalize_"].IsBool()) {
643  normalize_ = json["normalize_"].GetBool();
644  }
645  if (json.HasMember("const_value_") && json["const_value_"].IsInt()) {
646  const_value_ = json["const_value_"].GetInt();
647  }
648 
649  if (json.HasMember("scale_") && json["scale_"].IsArray()) {
650  const rapidjson::Value& scale_array = json["scale_"];
651  for (int i = 0; i < 4 && i < scale_array.Size(); i++) {
652  if (scale_array[i].IsFloat()) {
653  scale_[i] = scale_array[i].GetFloat();
654  }
655  }
656  }
657  if (json.HasMember("mean_") && json["mean_"].IsArray()) {
658  const rapidjson::Value& mean_array = json["mean_"];
659  for (int i = 0; i < 4 && i < mean_array.Size(); i++) {
660  if (mean_array[i].IsFloat()) {
661  mean_[i] = mean_array[i].GetFloat();
662  }
663  }
664  }
665  if (json.HasMember("std_") && json["std_"].IsArray()) {
666  const rapidjson::Value& std_array = json["std_"];
667  for (int i = 0; i < 4 && i < std_array.Size(); i++) {
668  if (std_array[i].IsFloat()) {
669  std_[i] = std_array[i].GetFloat();
670  }
671  }
672  }
673 
674  if (json.HasMember("interp_type_") && json["interp_type_"].IsString()) {
675  interp_type_ = base::stringToInterpType(json["interp_type_"].GetString());
676  }
677  if (json.HasMember("border_type_") && json["border_type_"].IsString()) {
678  border_type_ = base::stringToBorderType(json["border_type_"].GetString());
679  }
680 
681  if (json.HasMember("border_val_") && json["border_val_"].IsArray()) {
682  const rapidjson::Value& border_val_array = json["border_val_"];
683  for (int i = 0; i < 4 && i < border_val_array.Size(); i++) {
684  if (border_val_array[i].IsFloat()) {
685  border_val_.val_[i] = border_val_array[i].GetFloat();
686  } else if (border_val_array[i].IsDouble()) {
687  border_val_.val_[i] = border_val_array[i].GetDouble();
688  }
689  }
690  }
691 
692  return base::kStatusCodeOk;
693  }
694 };
695 
697  public:
698  CvtNormTransParam() : base::Param() {}
699  virtual ~CvtNormTransParam() {}
700 
703  // 数据类型,默认为浮点型
705  // 数据格式,默认为NCHW(通道数,图像高度,图像宽度)
707  // 是否进行归一化处理
708  bool normalize_ = true;
709  // 归一化的比例因子,用于将像素值缩放到0-1范围
710  float scale_[4] = {1.0f / 255.0f, 1.0f / 255.0f, 1.0f / 255.0f,
711  1.0f / 255.0f};
712  // 归一化处理中的均值,用于数据中心化
713  float mean_[4] = {0.0f, 0.0f, 0.0f, 0.0f};
714  // 归一化处理中的标准差,用于数据标准化
715  float std_[4] = {1.0f, 1.0f, 1.0f, 1.0f};
716 
719  rapidjson::Value& json,
720  rapidjson::Document::AllocatorType& allocator) override {
721  base::Status status = base::Param::serialize(json, allocator);
722  if (status != base::kStatusCodeOk) {
723  NNDEPLOY_LOGE("CvtNormTransParam::serialize failed\n");
724  return status;
725  }
726  std::string src_pixel_type_str = base::pixelTypeToString(src_pixel_type_);
727  json.AddMember("src_pixel_type_",
728  rapidjson::Value(src_pixel_type_str.c_str(), allocator),
729  allocator);
730  std::string dst_pixel_type_str = base::pixelTypeToString(dst_pixel_type_);
731  json.AddMember("dst_pixel_type_",
732  rapidjson::Value(dst_pixel_type_str.c_str(), allocator),
733  allocator);
734  std::string data_type_str = base::dataTypeToString(data_type_);
735  json.AddMember("data_type_",
736  rapidjson::Value(data_type_str.c_str(), allocator),
737  allocator);
738  std::string data_format_str = base::dataFormatToString(data_format_);
739  json.AddMember("data_format_",
740  rapidjson::Value(data_format_str.c_str(), allocator),
741  allocator);
742  json.AddMember("normalize_", normalize_, allocator);
743 
744  rapidjson::Value scale_array(rapidjson::kArrayType);
745  rapidjson::Value mean_array(rapidjson::kArrayType);
746  rapidjson::Value std_array(rapidjson::kArrayType);
747  for (int i = 0; i < 4; i++) {
748  scale_array.PushBack(scale_[i], allocator);
749  mean_array.PushBack(mean_[i], allocator);
750  std_array.PushBack(std_[i], allocator);
751  }
752  json.AddMember("scale_", scale_array, allocator);
753  json.AddMember("mean_", mean_array, allocator);
754  json.AddMember("std_", std_array, allocator);
755  return base::kStatusCodeOk;
756  }
757 
759  virtual base::Status deserialize(rapidjson::Value& json) override {
760  base::Status status = base::Param::deserialize(json);
761  if (status != base::kStatusCodeOk) {
762  NNDEPLOY_LOGE("CvtNormTransParam::deserialize failed\n");
763  return status;
764  }
765  if (json.HasMember("src_pixel_type_") &&
766  json["src_pixel_type_"].IsString()) {
767  src_pixel_type_ =
768  base::stringToPixelType(json["src_pixel_type_"].GetString());
769  }
770  if (json.HasMember("dst_pixel_type_") &&
771  json["dst_pixel_type_"].IsString()) {
772  dst_pixel_type_ =
773  base::stringToPixelType(json["dst_pixel_type_"].GetString());
774  }
775  if (json.HasMember("data_type_") && json["data_type_"].IsString()) {
776  data_type_ = base::stringToDataType(json["data_type_"].GetString());
777  }
778  if (json.HasMember("data_format_") && json["data_format_"].IsString()) {
779  data_format_ = base::stringToDataFormat(json["data_format_"].GetString());
780  }
781  if (json.HasMember("normalize_") && json["normalize_"].IsBool()) {
782  normalize_ = json["normalize_"].GetBool();
783  }
784  if (json.HasMember("scale_") && json["scale_"].IsArray()) {
785  const rapidjson::Value& scale_array = json["scale_"];
786  for (int i = 0; i < 4 && i < scale_array.Size(); i++) {
787  if (scale_array[i].IsFloat()) {
788  scale_[i] = scale_array[i].GetFloat();
789  }
790  }
791  }
792  if (json.HasMember("mean_") && json["mean_"].IsArray()) {
793  const rapidjson::Value& mean_array = json["mean_"];
794  for (int i = 0; i < 4 && i < mean_array.Size(); i++) {
795  if (mean_array[i].IsFloat()) {
796  mean_[i] = mean_array[i].GetFloat();
797  }
798  }
799  }
800  if (json.HasMember("std_") && json["std_"].IsArray()) {
801  const rapidjson::Value& std_array = json["std_"];
802  for (int i = 0; i < 4 && i < std_array.Size(); i++) {
803  if (std_array[i].IsFloat()) {
804  std_[i] = std_array[i].GetFloat();
805  }
806  }
807  }
808  return base::kStatusCodeOk;
809  }
810 };
811 
813  public:
814  CvtResizeNormTransParam() : base::Param() {}
816 
817  // 源图像的像素类型
819  // 目标图像的像素类型
821  // 图像缩放时使用的插值类型
823  // 目标输出的高度
824  int h_ = -1;
825  // 目标输出的宽度
826  int w_ = -1;
827  // 数据类型,默认为浮点型
829  // 数据格式,默认为NCHW(通道数,图像高度,图像宽度)
831  // 是否进行归一化处理
832  bool normalize_ = true;
833  // 归一化的比例因子,用于将像素值缩放到0-1范围
834  float scale_[4] = {1.0f / 255.0f, 1.0f / 255.0f, 1.0f / 255.0f,
835  1.0f / 255.0f};
836  // 归一化处理中的均值,用于数据中心化
837  float mean_[4] = {0.0f, 0.0f, 0.0f, 0.0f};
838  // 归一化处理中的标准差,用于数据标准化
839  float std_[4] = {1.0f, 1.0f, 1.0f, 1.0f};
840 
843  rapidjson::Value& json, rapidjson::Document::AllocatorType& allocator) {
844  this->addRequiredParam("h_");
845  this->addRequiredParam("w_");
846  base::Status status = base::Param::serialize(json, allocator);
847  if (status != base::kStatusCodeOk) {
848  return status;
849  }
850 
851  std::string src_pixel_type_str = base::pixelTypeToString(src_pixel_type_);
852  json.AddMember("src_pixel_type_",
853  rapidjson::Value(src_pixel_type_str.c_str(), allocator),
854  allocator);
855  std::string dst_pixel_type_str = base::pixelTypeToString(dst_pixel_type_);
856  json.AddMember("dst_pixel_type_",
857  rapidjson::Value(dst_pixel_type_str.c_str(), allocator),
858  allocator);
859  std::string interp_type_str = base::interpTypeToString(interp_type_);
860  json.AddMember("interp_type_",
861  rapidjson::Value(interp_type_str.c_str(), allocator),
862  allocator);
863  json.AddMember("h_", h_, allocator);
864  json.AddMember("w_", w_, allocator);
865  std::string data_type_str = base::dataTypeToString(data_type_);
866  json.AddMember("data_type_",
867  rapidjson::Value(data_type_str.c_str(), allocator),
868  allocator);
869  std::string data_format_str = base::dataFormatToString(data_format_);
870  json.AddMember("data_format_",
871  rapidjson::Value(data_format_str.c_str(), allocator),
872  allocator);
873  json.AddMember("normalize_", normalize_, allocator);
874 
875  rapidjson::Value scale_array(rapidjson::kArrayType);
876  rapidjson::Value mean_array(rapidjson::kArrayType);
877  rapidjson::Value std_array(rapidjson::kArrayType);
878  for (int i = 0; i < 4; i++) {
879  scale_array.PushBack(scale_[i], allocator);
880  mean_array.PushBack(mean_[i], allocator);
881  std_array.PushBack(std_[i], allocator);
882  }
883  json.AddMember("scale_", scale_array, allocator);
884  json.AddMember("mean_", mean_array, allocator);
885  json.AddMember("std_", std_array, allocator);
886 
887  return base::kStatusCodeOk;
888  }
889 
891  virtual base::Status deserialize(rapidjson::Value& json) {
892  base::Status status = base::Param::deserialize(json);
893  if (status != base::kStatusCodeOk) {
894  return status;
895  }
896 
897  if (json.HasMember("src_pixel_type_") &&
898  json["src_pixel_type_"].IsString()) {
899  src_pixel_type_ =
900  base::stringToPixelType(json["src_pixel_type_"].GetString());
901  }
902  if (json.HasMember("dst_pixel_type_") &&
903  json["dst_pixel_type_"].IsString()) {
904  dst_pixel_type_ =
905  base::stringToPixelType(json["dst_pixel_type_"].GetString());
906  }
907  if (json.HasMember("interp_type_") && json["interp_type_"].IsString()) {
908  interp_type_ = base::stringToInterpType(json["interp_type_"].GetString());
909  }
910  if (json.HasMember("h_") && json["h_"].IsInt()) {
911  h_ = json["h_"].GetInt();
912  }
913  if (json.HasMember("w_") && json["w_"].IsInt()) {
914  w_ = json["w_"].GetInt();
915  }
916  if (json.HasMember("data_type_") && json["data_type_"].IsString()) {
917  data_type_ = base::stringToDataType(json["data_type_"].GetString());
918  }
919  if (json.HasMember("data_format_") && json["data_format_"].IsString()) {
920  data_format_ = base::stringToDataFormat(json["data_format_"].GetString());
921  }
922  if (json.HasMember("normalize_") && json["normalize_"].IsBool()) {
923  normalize_ = json["normalize_"].GetBool();
924  }
925 
926  if (json.HasMember("scale_") && json["scale_"].IsArray()) {
927  const rapidjson::Value& scale_array = json["scale_"];
928  for (int i = 0; i < 4 && i < scale_array.Size(); i++) {
929  if (scale_array[i].IsFloat()) {
930  scale_[i] = scale_array[i].GetFloat();
931  }
932  }
933  }
934  if (json.HasMember("mean_") && json["mean_"].IsArray()) {
935  const rapidjson::Value& mean_array = json["mean_"];
936  for (int i = 0; i < 4 && i < mean_array.Size(); i++) {
937  if (mean_array[i].IsFloat()) {
938  mean_[i] = mean_array[i].GetFloat();
939  }
940  }
941  }
942  if (json.HasMember("std_") && json["std_"].IsArray()) {
943  const rapidjson::Value& std_array = json["std_"];
944  for (int i = 0; i < 4 && i < std_array.Size(); i++) {
945  if (std_array[i].IsFloat()) {
946  std_[i] = std_array[i].GetFloat();
947  }
948  }
949  }
950 
951  return base::kStatusCodeOk;
952  }
953 };
954 
960  public:
961  CvtResizePadNormTransParam() : base::Param() {}
963 
969  int h_ = -1;
970  int w_ = -1;
971  bool normalize_ = true;
972  float scale_[4] = {1.0f / 255.0f, 1.0f / 255.0f, 1.0f / 255.0f,
973  1.0f / 255.0f};
974  float mean_[4] = {0.0f, 0.0f, 0.0f, 0.0f};
975  float std_[4] = {1.0f, 1.0f, 1.0f, 1.0f};
976 
978  int top_ = 0;
979  int bottom_ = 0;
980  int left_ = 0;
981  int right_ = 0;
982  base::Scalar2d border_val_ = 0.0;
983 
986  rapidjson::Value& json,
987  rapidjson::Document::AllocatorType& allocator) override {
988  this->addRequiredParam("h_");
989  this->addRequiredParam("w_");
990  base::Status status = base::Param::serialize(json, allocator);
991  if (status != base::kStatusCodeOk) {
992  NNDEPLOY_LOGE("CvtResizePadNormTransParam::serialize failed\n");
993  return status;
994  }
995  std::string src_pixel_type_str = base::pixelTypeToString(src_pixel_type_);
996  json.AddMember("src_pixel_type_",
997  rapidjson::Value(src_pixel_type_str.c_str(), allocator),
998  allocator);
999  std::string dst_pixel_type_str = base::pixelTypeToString(dst_pixel_type_);
1000  json.AddMember("dst_pixel_type_",
1001  rapidjson::Value(dst_pixel_type_str.c_str(), allocator),
1002  allocator);
1003  std::string interp_type_str = base::interpTypeToString(interp_type_);
1004  json.AddMember("interp_type_",
1005  rapidjson::Value(interp_type_str.c_str(), allocator),
1006  allocator);
1007  std::string data_type_str = base::dataTypeToString(data_type_);
1008  json.AddMember("data_type_",
1009  rapidjson::Value(data_type_str.c_str(), allocator),
1010  allocator);
1011  std::string data_format_str = base::dataFormatToString(data_format_);
1012  json.AddMember("data_format_",
1013  rapidjson::Value(data_format_str.c_str(), allocator),
1014  allocator);
1015  json.AddMember("h_", h_, allocator);
1016  json.AddMember("w_", w_, allocator);
1017  json.AddMember("normalize_", normalize_, allocator);
1018 
1019  rapidjson::Value scale_array(rapidjson::kArrayType);
1020  rapidjson::Value mean_array(rapidjson::kArrayType);
1021  rapidjson::Value std_array(rapidjson::kArrayType);
1022  for (int i = 0; i < 4; i++) {
1023  scale_array.PushBack(scale_[i], allocator);
1024  mean_array.PushBack(mean_[i], allocator);
1025  std_array.PushBack(std_[i], allocator);
1026  }
1027  json.AddMember("scale_", scale_array, allocator);
1028  json.AddMember("mean_", mean_array, allocator);
1029  json.AddMember("std_", std_array, allocator);
1030 
1031  std::string border_type_str = base::borderTypeToString(border_type_);
1032  json.AddMember("border_type_",
1033  rapidjson::Value(border_type_str.c_str(), allocator),
1034  allocator);
1035  json.AddMember("top_", top_, allocator);
1036  json.AddMember("bottom_", bottom_, allocator);
1037  json.AddMember("left_", left_, allocator);
1038  json.AddMember("right_", right_, allocator);
1039 
1040  rapidjson::Value border_val_array(rapidjson::kArrayType);
1041  for (int i = 0; i < 4; i++) {
1042  border_val_array.PushBack(border_val_.val_[i], allocator);
1043  }
1044  json.AddMember("border_val_", border_val_array, allocator);
1045 
1046  return base::kStatusCodeOk;
1047  }
1048 
1050  virtual base::Status deserialize(rapidjson::Value& json) override {
1051  base::Status status = base::Param::deserialize(json);
1052  if (status != base::kStatusCodeOk) {
1053  NNDEPLOY_LOGE("CvtResizePadNormTransParam::deserialize failed\n");
1054  return status;
1055  }
1056  if (json.HasMember("src_pixel_type_") &&
1057  json["src_pixel_type_"].IsString()) {
1058  src_pixel_type_ =
1059  base::stringToPixelType(json["src_pixel_type_"].GetString());
1060  }
1061  if (json.HasMember("dst_pixel_type_") &&
1062  json["dst_pixel_type_"].IsString()) {
1063  dst_pixel_type_ =
1064  base::stringToPixelType(json["dst_pixel_type_"].GetString());
1065  }
1066  if (json.HasMember("interp_type_") && json["interp_type_"].IsString()) {
1067  interp_type_ = base::stringToInterpType(json["interp_type_"].GetString());
1068  }
1069  if (json.HasMember("data_type_") && json["data_type_"].IsString()) {
1070  data_type_ = base::stringToDataType(json["data_type_"].GetString());
1071  }
1072  if (json.HasMember("data_format_") && json["data_format_"].IsString()) {
1073  data_format_ = base::stringToDataFormat(json["data_format_"].GetString());
1074  }
1075  if (json.HasMember("h_") && json["h_"].IsInt()) {
1076  h_ = json["h_"].GetInt();
1077  }
1078  if (json.HasMember("w_") && json["w_"].IsInt()) {
1079  w_ = json["w_"].GetInt();
1080  }
1081  if (json.HasMember("normalize_") && json["normalize_"].IsBool()) {
1082  normalize_ = json["normalize_"].GetBool();
1083  }
1084 
1085  if (json.HasMember("scale_") && json["scale_"].IsArray()) {
1086  const rapidjson::Value& scale_array = json["scale_"];
1087  for (int i = 0; i < 4 && i < scale_array.Size(); i++) {
1088  if (scale_array[i].IsFloat()) {
1089  scale_[i] = scale_array[i].GetFloat();
1090  }
1091  }
1092  }
1093  if (json.HasMember("mean_") && json["mean_"].IsArray()) {
1094  const rapidjson::Value& mean_array = json["mean_"];
1095  for (int i = 0; i < 4 && i < mean_array.Size(); i++) {
1096  if (mean_array[i].IsFloat()) {
1097  mean_[i] = mean_array[i].GetFloat();
1098  }
1099  }
1100  }
1101  if (json.HasMember("std_") && json["std_"].IsArray()) {
1102  const rapidjson::Value& std_array = json["std_"];
1103  for (int i = 0; i < 4 && i < std_array.Size(); i++) {
1104  if (std_array[i].IsFloat()) {
1105  std_[i] = std_array[i].GetFloat();
1106  }
1107  }
1108  }
1109 
1110  if (json.HasMember("border_type_") && json["border_type_"].IsString()) {
1111  border_type_ = base::stringToBorderType(json["border_type_"].GetString());
1112  }
1113  if (json.HasMember("top_") && json["top_"].IsInt()) {
1114  top_ = json["top_"].GetInt();
1115  }
1116  if (json.HasMember("bottom_") && json["bottom_"].IsInt()) {
1117  bottom_ = json["bottom_"].GetInt();
1118  }
1119  if (json.HasMember("left_") && json["left_"].IsInt()) {
1120  left_ = json["left_"].GetInt();
1121  }
1122  if (json.HasMember("right_") && json["right_"].IsInt()) {
1123  right_ = json["right_"].GetInt();
1124  }
1125 
1126  if (json.HasMember("border_val_") && json["border_val_"].IsArray()) {
1127  const rapidjson::Value& border_val_array = json["border_val_"];
1128  for (int i = 0; i < 4 && i < border_val_array.Size(); i++) {
1129  if (border_val_array[i].IsFloat()) {
1130  border_val_.val_[i] = border_val_array[i].GetFloat();
1131  }
1132  }
1133  }
1134 
1135  return base::kStatusCodeOk;
1136  }
1137 };
1138 
1144  public:
1145  CvtResizeCropNormTransParam() : base::Param() {}
1147 
1153 
1154  int resize_h_ = -1;
1155  int resize_w_ = -1;
1156 
1157  bool normalize_ = true;
1158  float scale_[4] = {1.0f / 255.0f, 1.0f / 255.0f, 1.0f / 255.0f,
1159  1.0f / 255.0f};
1160  float mean_[4] = {0.0f, 0.0f, 0.0f, 0.0f};
1161  float std_[4] = {1.0f, 1.0f, 1.0f, 1.0f};
1162 
1163  int top_left_x_ = 0;
1164  int top_left_y_ = 0;
1165  int width_ = 0;
1166  int height_ = 0;
1167 
1168  using base::Param::serialize;
1170  rapidjson::Value& json,
1171  rapidjson::Document::AllocatorType& allocator) override {
1172  this->addRequiredParam("resize_h_");
1173  this->addRequiredParam("resize_w_");
1174  base::Status status = base::Param::serialize(json, allocator);
1175  if (status != base::kStatusCodeOk) {
1176  NNDEPLOY_LOGE("CvtResizeCropNormTransParam::serialize failed\n");
1177  return status;
1178  }
1179  std::string src_pixel_type_str = base::pixelTypeToString(src_pixel_type_);
1180  json.AddMember("src_pixel_type_",
1181  rapidjson::Value(src_pixel_type_str.c_str(), allocator),
1182  allocator);
1183  std::string dst_pixel_type_str = base::pixelTypeToString(dst_pixel_type_);
1184  json.AddMember("dst_pixel_type_",
1185  rapidjson::Value(dst_pixel_type_str.c_str(), allocator),
1186  allocator);
1187  std::string interp_type_str = base::interpTypeToString(interp_type_);
1188  json.AddMember("interp_type_",
1189  rapidjson::Value(interp_type_str.c_str(), allocator),
1190  allocator);
1191  std::string data_type_str = base::dataTypeToString(data_type_);
1192  json.AddMember("data_type_",
1193  rapidjson::Value(data_type_str.c_str(), allocator),
1194  allocator);
1195  std::string data_format_str = base::dataFormatToString(data_format_);
1196  json.AddMember("data_format_",
1197  rapidjson::Value(data_format_str.c_str(), allocator),
1198  allocator);
1199 
1200  json.AddMember("resize_h_", resize_h_, allocator);
1201  json.AddMember("resize_w_", resize_w_, allocator);
1202  json.AddMember("normalize_", normalize_, allocator);
1203 
1204  rapidjson::Value scale_array(rapidjson::kArrayType);
1205  rapidjson::Value mean_array(rapidjson::kArrayType);
1206  rapidjson::Value std_array(rapidjson::kArrayType);
1207  for (int i = 0; i < 4; i++) {
1208  scale_array.PushBack(scale_[i], allocator);
1209  mean_array.PushBack(mean_[i], allocator);
1210  std_array.PushBack(std_[i], allocator);
1211  }
1212  json.AddMember("scale_", scale_array, allocator);
1213  json.AddMember("mean_", mean_array, allocator);
1214  json.AddMember("std_", std_array, allocator);
1215 
1216  json.AddMember("top_left_x_", top_left_x_, allocator);
1217  json.AddMember("top_left_y_", top_left_y_, allocator);
1218  json.AddMember("width_", width_, allocator);
1219  json.AddMember("height_", height_, allocator);
1220 
1221  return base::kStatusCodeOk;
1222  }
1223 
1225  virtual base::Status deserialize(rapidjson::Value& json) override {
1226  base::Status status = base::Param::deserialize(json);
1227  if (status != base::kStatusCodeOk) {
1228  NNDEPLOY_LOGE("CvtResizeCropNormTransParam::deserialize failed\n");
1229  return status;
1230  }
1231  if (json.HasMember("src_pixel_type_") &&
1232  json["src_pixel_type_"].IsString()) {
1233  src_pixel_type_ =
1234  base::stringToPixelType(json["src_pixel_type_"].GetString());
1235  }
1236  if (json.HasMember("dst_pixel_type_") &&
1237  json["dst_pixel_type_"].IsString()) {
1238  dst_pixel_type_ =
1239  base::stringToPixelType(json["dst_pixel_type_"].GetString());
1240  }
1241  if (json.HasMember("interp_type_") && json["interp_type_"].IsString()) {
1242  interp_type_ = base::stringToInterpType(json["interp_type_"].GetString());
1243  }
1244  if (json.HasMember("data_type_") && json["data_type_"].IsString()) {
1245  data_type_ = base::stringToDataType(json["data_type_"].GetString());
1246  }
1247  if (json.HasMember("data_format_") && json["data_format_"].IsString()) {
1248  data_format_ = base::stringToDataFormat(json["data_format_"].GetString());
1249  }
1250 
1251  if (json.HasMember("resize_h_") && json["resize_h_"].IsInt()) {
1252  resize_h_ = json["resize_h_"].GetInt();
1253  }
1254  if (json.HasMember("resize_w_") && json["resize_w_"].IsInt()) {
1255  resize_w_ = json["resize_w_"].GetInt();
1256  }
1257  if (json.HasMember("normalize_") && json["normalize_"].IsBool()) {
1258  normalize_ = json["normalize_"].GetBool();
1259  }
1260 
1261  if (json.HasMember("scale_") && json["scale_"].IsArray()) {
1262  const rapidjson::Value& scale_array = json["scale_"];
1263  for (int i = 0; i < 4 && i < scale_array.Size(); i++) {
1264  if (scale_array[i].IsFloat()) {
1265  scale_[i] = scale_array[i].GetFloat();
1266  }
1267  }
1268  }
1269  if (json.HasMember("mean_") && json["mean_"].IsArray()) {
1270  const rapidjson::Value& mean_array = json["mean_"];
1271  for (int i = 0; i < 4 && i < mean_array.Size(); i++) {
1272  if (mean_array[i].IsFloat()) {
1273  mean_[i] = mean_array[i].GetFloat();
1274  }
1275  }
1276  }
1277  if (json.HasMember("std_") && json["std_"].IsArray()) {
1278  const rapidjson::Value& std_array = json["std_"];
1279  for (int i = 0; i < 4 && i < std_array.Size(); i++) {
1280  if (std_array[i].IsFloat()) {
1281  std_[i] = std_array[i].GetFloat();
1282  }
1283  }
1284  }
1285 
1286  if (json.HasMember("top_left_x_") && json["top_left_x_"].IsInt()) {
1287  top_left_x_ = json["top_left_x_"].GetInt();
1288  }
1289  if (json.HasMember("top_left_y_") && json["top_left_y_"].IsInt()) {
1290  top_left_y_ = json["top_left_y_"].GetInt();
1291  }
1292  if (json.HasMember("width_") && json["width_"].IsInt()) {
1293  width_ = json["width_"].GetInt();
1294  }
1295  if (json.HasMember("height_") && json["height_"].IsInt()) {
1296  height_ = json["height_"].GetInt();
1297  }
1298 
1299  return base::kStatusCodeOk;
1300  }
1301 };
1302 
1303 } // namespace preprocess
1304 } // namespace nndeploy
1305 
1306 #endif /* _NNDEPLOY_PREPROCESS_PARAMS_H_ */
virtual base::Status deserialize(rapidjson::Value &json)
virtual std::string serialize()
Template class for a 4-element vector. Scalar_ and Scalar can be used just as typical 4-element vecto...
Definition: type.h:421
virtual base::Status deserialize(rapidjson::Value &json) override
Definition: params.h:109
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
Definition: params.h:93
virtual base::Status deserialize(rapidjson::Value &json) override
Definition: params.h:759
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
Definition: params.h:718
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
Definition: params.h:1169
virtual base::Status deserialize(rapidjson::Value &json) override
Definition: params.h:1225
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
Definition: params.h:842
virtual base::Status deserialize(rapidjson::Value &json)
Definition: params.h:891
virtual base::Status deserialize(rapidjson::Value &json) override
Definition: params.h:1050
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
Definition: params.h:985
前处理通常由如下算子组合排列 cvtcolor resize padding warp_affine crop Normlize transpose dynamic_shape
Definition: params.h:34
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
Definition: params.h:43
virtual base::Status deserialize(rapidjson::Value &json) override
Definition: params.h:62
virtual base::Status deserialize(rapidjson::Value &json) override
Definition: params.h:299
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
Definition: params.h:264
virtual base::Status deserialize(rapidjson::Value &json) override
Definition: params.h:165
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
Definition: params.h:142
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
Definition: params.h:421
virtual base::Status deserialize(rapidjson::Value &json) override
Definition: params.h:446
virtual base::Status deserialize(rapidjson::Value &json) override
Definition: params.h:384
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
Definition: params.h:363
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
Definition: params.h:208
virtual base::Status deserialize(rapidjson::Value &json) override
Definition: params.h:230
virtual base::Status deserialize(rapidjson::Value &json) override
Definition: params.h:592
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
Definition: params.h:512
#define NNDEPLOY_LOGE(fmt,...)
Definition: log.h:59
#define NNDEPLOY_CC_API
api
Definition: macro.h:29
std::string dataFormatToString(DataFormat data_format)
PixelType stringToPixelType(const std::string &pixel_type_str)
@ kStatusCodeOk
Definition: status.h:13
BorderType stringToBorderType(const std::string &border_type_str)
DataType stringToDataType(const std::string &str)
@ kInterpTypeLinear
Definition: type.h:57
std::vector< int > IntVector
Definition: common.h:379
DataFormat stringToDataFormat(const std::string &str)
std::string borderTypeToString(BorderType border_type)
std::string dataTypeToString(DataType data_type)
DataType dataTypeOf< float >()
std::string pixelTypeToString(PixelType pixel_type)
std::string interpTypeToString(InterpType interp_type)
@ kBorderTypeConstant
Definition: type.h:71
InterpType stringToInterpType(const std::string &interp_type_str)
@ kDataFormatNHWC
Definition: common.h:147
@ kDataFormatNCHW
Definition: common.h:146
@ kPixelTypeBGR
Definition: type.h:15
@ kPixelTypeRGB
Definition: type.h:14