2 #ifndef _NNDEPLOY_PREPROCESS_PARAMS_H_
3 #define _NNDEPLOY_PREPROCESS_PARAMS_H_
21 namespace preprocess {
44 rapidjson::Value& json,
45 rapidjson::Document::AllocatorType& allocator)
override {
52 json.AddMember(
"src_pixel_type_",
53 rapidjson::Value(src_pixel_type_str.c_str(), allocator),
56 json.AddMember(
"dst_pixel_type_",
57 rapidjson::Value(dst_pixel_type_str.c_str(), allocator),
68 if (json.HasMember(
"src_pixel_type_") &&
69 json[
"src_pixel_type_"].IsString()) {
73 if (json.HasMember(
"dst_pixel_type_") &&
74 json[
"dst_pixel_type_"].IsString()) {
94 rapidjson::Value& json,
95 rapidjson::Document::AllocatorType& allocator)
override {
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);
115 if (json.HasMember(
"top_left_x_") && json[
"top_left_x_"].IsInt()) {
116 top_left_x_ = json[
"top_left_x_"].GetInt();
118 if (json.HasMember(
"top_left_y_") && json[
"top_left_y_"].IsInt()) {
119 top_left_y_ = json[
"top_left_y_"].GetInt();
121 if (json.HasMember(
"width_") && json[
"width_"].IsInt()) {
122 width_ = json[
"width_"].GetInt();
124 if (json.HasMember(
"height_") && json[
"height_"].IsInt()) {
125 height_ = json[
"height_"].GetInt();
136 float scale_[4] = {1.0f / 255.0f, 1.0f / 255.0f, 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};
143 rapidjson::Value& json,
144 rapidjson::Document::AllocatorType& allocator)
override {
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);
158 json.AddMember(
"scale_", scale_array, allocator);
159 json.AddMember(
"mean_", mean_array, allocator);
160 json.AddMember(
"std_", std_array, allocator);
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();
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();
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();
209 rapidjson::Value& json,
210 rapidjson::Document::AllocatorType& allocator)
override {
216 std::string src_data_format_str =
218 json.AddMember(
"src_data_format_",
219 rapidjson::Value(src_data_format_str.c_str(), allocator),
221 std::string dst_data_format_str =
223 json.AddMember(
"dst_data_format_",
224 rapidjson::Value(dst_data_format_str.c_str(), allocator),
236 if (json.HasMember(
"src_data_format_") &&
237 json[
"src_data_format_"].IsString()) {
241 if (json.HasMember(
"dst_data_format_") &&
242 json[
"dst_data_format_"].IsString()) {
255 bool is_power_of_n_ =
false;
265 rapidjson::Value& json,
266 rapidjson::Document::AllocatorType& allocator)
override {
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);
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);
281 json.AddMember(
"min_shape_", min_shape_array, allocator);
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);
287 json.AddMember(
"opt_shape_", opt_shape_array, allocator);
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);
293 json.AddMember(
"max_shape_", max_shape_array, allocator);
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();
308 if (json.HasMember(
"n_") && json[
"n_"].IsInt()) {
309 n_ = json[
"n_"].GetInt();
311 if (json.HasMember(
"w_align_") && json[
"w_align_"].IsInt()) {
312 w_align_ = json[
"w_align_"].GetInt();
314 if (json.HasMember(
"h_align_") && json[
"h_align_"].IsInt()) {
315 h_align_ = json[
"h_align_"].GetInt();
318 if (json.HasMember(
"min_shape_") && json[
"min_shape_"].IsArray()) {
319 const rapidjson::Value& min_shape_array = json[
"min_shape_"];
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());
328 if (json.HasMember(
"opt_shape_") && json[
"opt_shape_"].IsArray()) {
329 const rapidjson::Value& opt_shape_array = json[
"opt_shape_"];
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());
338 if (json.HasMember(
"max_shape_") && json[
"max_shape_"].IsArray()) {
339 const rapidjson::Value& max_shape_array = json[
"max_shape_"];
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());
358 float scale_w_ = 0.0f;
359 float scale_h_ = 0.0f;
364 rapidjson::Value& json,
365 rapidjson::Document::AllocatorType& allocator)
override {
366 this->addRequiredParam(
"dst_h_");
367 this->addRequiredParam(
"dst_w_");
374 json.AddMember(
"interp_type_",
375 rapidjson::Value(interp_type_str.c_str(), 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);
390 if (json.HasMember(
"interp_type_") && json[
"interp_type_"].IsString()) {
393 if (json.HasMember(
"scale_w_") && json[
"scale_w_"].IsFloat()) {
394 scale_w_ = json[
"scale_w_"].GetFloat();
396 if (json.HasMember(
"scale_h_") && json[
"scale_h_"].IsFloat()) {
397 scale_h_ = json[
"scale_h_"].GetFloat();
399 if (json.HasMember(
"dst_h_") && json[
"dst_h_"].IsInt()) {
400 dst_h_ = json[
"dst_h_"].GetInt();
402 if (json.HasMember(
"dst_w_") && json[
"dst_w_"].IsInt()) {
403 dst_w_ = json[
"dst_w_"].GetInt();
422 rapidjson::Value& json,
423 rapidjson::Document::AllocatorType& allocator)
override {
430 json.AddMember(
"border_type_",
431 rapidjson::Value(border_type_str.c_str(), 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);
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);
442 json.AddMember(
"border_val_", border_val_array, allocator);
452 if (json.HasMember(
"border_type_") && json[
"border_type_"].IsString()) {
455 if (json.HasMember(
"top_") && json[
"top_"].IsInt()) {
456 top_ = json[
"top_"].GetInt();
458 if (json.HasMember(
"bottom_") && json[
"bottom_"].IsInt()) {
459 bottom_ = json[
"bottom_"].GetInt();
461 if (json.HasMember(
"left_") && json[
"left_"].IsInt()) {
462 left_ = json[
"left_"].GetInt();
464 if (json.HasMember(
"right_") && json[
"right_"].IsInt()) {
465 right_ = json[
"right_"].GetInt();
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();
490 float transform_[2][3] = {{1.0f, 0.0f, 0.0f}, {0.0f, 1.0f, 0.0f}};
500 bool normalize_ =
true;
501 float scale_[4] = {1.0f / 255.0f, 1.0f / 255.0f, 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;
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_");
522 NNDEPLOY_LOGE(
"WarpAffineCvtNormTransParam::serialize failed\n");
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);
532 json.AddMember(
"transform_", transform_array, allocator);
534 json.AddMember(
"dst_w_", dst_w_, allocator);
535 json.AddMember(
"dst_h_", dst_h_, allocator);
538 json.AddMember(
"src_pixel_type_",
539 rapidjson::Value(src_pixel_type_str.c_str(), allocator),
542 json.AddMember(
"dst_pixel_type_",
543 rapidjson::Value(dst_pixel_type_str.c_str(), allocator),
547 json.AddMember(
"data_type_",
548 rapidjson::Value(data_type_str.c_str(), allocator),
551 json.AddMember(
"data_format_",
552 rapidjson::Value(data_format_str.c_str(), allocator),
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);
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);
569 json.AddMember(
"scale_", scale_array, allocator);
570 json.AddMember(
"mean_", mean_array, allocator);
571 json.AddMember(
"std_", std_array, allocator);
574 json.AddMember(
"interp_type_",
575 rapidjson::Value(interp_type_str.c_str(), allocator),
578 json.AddMember(
"border_type_",
579 rapidjson::Value(border_type_str.c_str(), allocator),
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);
586 json.AddMember(
"border_val_", border_val_array, allocator);
595 NNDEPLOY_LOGE(
"WarpAffineCvtNormTransParam::deserialize failed\n");
598 if (json.HasMember(
"transform_") && json[
"transform_"].IsArray()) {
599 const rapidjson::Value& transform_array = json[
"transform_"];
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();
611 if (json.HasMember(
"dst_w_") && json[
"dst_w_"].IsInt()) {
612 dst_w_ = json[
"dst_w_"].GetInt();
614 if (json.HasMember(
"dst_h_") && json[
"dst_h_"].IsInt()) {
615 dst_h_ = json[
"dst_h_"].GetInt();
618 if (json.HasMember(
"src_pixel_type_") &&
619 json[
"src_pixel_type_"].IsString()) {
623 if (json.HasMember(
"dst_pixel_type_") &&
624 json[
"dst_pixel_type_"].IsString()) {
629 if (json.HasMember(
"data_type_") && json[
"data_type_"].IsString()) {
632 if (json.HasMember(
"data_format_") && json[
"data_format_"].IsString()) {
636 if (json.HasMember(
"h_") && json[
"h_"].IsInt()) {
637 h_ = json[
"h_"].GetInt();
639 if (json.HasMember(
"w_") && json[
"w_"].IsInt()) {
640 w_ = json[
"w_"].GetInt();
642 if (json.HasMember(
"normalize_") && json[
"normalize_"].IsBool()) {
643 normalize_ = json[
"normalize_"].GetBool();
645 if (json.HasMember(
"const_value_") && json[
"const_value_"].IsInt()) {
646 const_value_ = json[
"const_value_"].GetInt();
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();
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();
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();
674 if (json.HasMember(
"interp_type_") && json[
"interp_type_"].IsString()) {
677 if (json.HasMember(
"border_type_") && json[
"border_type_"].IsString()) {
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();
708 bool normalize_ =
true;
710 float scale_[4] = {1.0f / 255.0f, 1.0f / 255.0f, 1.0f / 255.0f,
713 float mean_[4] = {0.0f, 0.0f, 0.0f, 0.0f};
715 float std_[4] = {1.0f, 1.0f, 1.0f, 1.0f};
719 rapidjson::Value& json,
720 rapidjson::Document::AllocatorType& allocator)
override {
727 json.AddMember(
"src_pixel_type_",
728 rapidjson::Value(src_pixel_type_str.c_str(), allocator),
731 json.AddMember(
"dst_pixel_type_",
732 rapidjson::Value(dst_pixel_type_str.c_str(), allocator),
735 json.AddMember(
"data_type_",
736 rapidjson::Value(data_type_str.c_str(), allocator),
739 json.AddMember(
"data_format_",
740 rapidjson::Value(data_format_str.c_str(), allocator),
742 json.AddMember(
"normalize_", normalize_, allocator);
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);
752 json.AddMember(
"scale_", scale_array, allocator);
753 json.AddMember(
"mean_", mean_array, allocator);
754 json.AddMember(
"std_", std_array, allocator);
765 if (json.HasMember(
"src_pixel_type_") &&
766 json[
"src_pixel_type_"].IsString()) {
770 if (json.HasMember(
"dst_pixel_type_") &&
771 json[
"dst_pixel_type_"].IsString()) {
775 if (json.HasMember(
"data_type_") && json[
"data_type_"].IsString()) {
778 if (json.HasMember(
"data_format_") && json[
"data_format_"].IsString()) {
781 if (json.HasMember(
"normalize_") && json[
"normalize_"].IsBool()) {
782 normalize_ = json[
"normalize_"].GetBool();
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();
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();
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();
832 bool normalize_ =
true;
834 float scale_[4] = {1.0f / 255.0f, 1.0f / 255.0f, 1.0f / 255.0f,
837 float mean_[4] = {0.0f, 0.0f, 0.0f, 0.0f};
839 float std_[4] = {1.0f, 1.0f, 1.0f, 1.0f};
843 rapidjson::Value& json, rapidjson::Document::AllocatorType& allocator) {
844 this->addRequiredParam(
"h_");
845 this->addRequiredParam(
"w_");
852 json.AddMember(
"src_pixel_type_",
853 rapidjson::Value(src_pixel_type_str.c_str(), allocator),
856 json.AddMember(
"dst_pixel_type_",
857 rapidjson::Value(dst_pixel_type_str.c_str(), allocator),
860 json.AddMember(
"interp_type_",
861 rapidjson::Value(interp_type_str.c_str(), allocator),
863 json.AddMember(
"h_", h_, allocator);
864 json.AddMember(
"w_", w_, allocator);
866 json.AddMember(
"data_type_",
867 rapidjson::Value(data_type_str.c_str(), allocator),
870 json.AddMember(
"data_format_",
871 rapidjson::Value(data_format_str.c_str(), allocator),
873 json.AddMember(
"normalize_", normalize_, allocator);
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);
883 json.AddMember(
"scale_", scale_array, allocator);
884 json.AddMember(
"mean_", mean_array, allocator);
885 json.AddMember(
"std_", std_array, allocator);
897 if (json.HasMember(
"src_pixel_type_") &&
898 json[
"src_pixel_type_"].IsString()) {
902 if (json.HasMember(
"dst_pixel_type_") &&
903 json[
"dst_pixel_type_"].IsString()) {
907 if (json.HasMember(
"interp_type_") && json[
"interp_type_"].IsString()) {
910 if (json.HasMember(
"h_") && json[
"h_"].IsInt()) {
911 h_ = json[
"h_"].GetInt();
913 if (json.HasMember(
"w_") && json[
"w_"].IsInt()) {
914 w_ = json[
"w_"].GetInt();
916 if (json.HasMember(
"data_type_") && json[
"data_type_"].IsString()) {
919 if (json.HasMember(
"data_format_") && json[
"data_format_"].IsString()) {
922 if (json.HasMember(
"normalize_") && json[
"normalize_"].IsBool()) {
923 normalize_ = json[
"normalize_"].GetBool();
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();
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();
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();
971 bool normalize_ =
true;
972 float scale_[4] = {1.0f / 255.0f, 1.0f / 255.0f, 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};
986 rapidjson::Value& json,
987 rapidjson::Document::AllocatorType& allocator)
override {
988 this->addRequiredParam(
"h_");
989 this->addRequiredParam(
"w_");
992 NNDEPLOY_LOGE(
"CvtResizePadNormTransParam::serialize failed\n");
996 json.AddMember(
"src_pixel_type_",
997 rapidjson::Value(src_pixel_type_str.c_str(), allocator),
1000 json.AddMember(
"dst_pixel_type_",
1001 rapidjson::Value(dst_pixel_type_str.c_str(), allocator),
1004 json.AddMember(
"interp_type_",
1005 rapidjson::Value(interp_type_str.c_str(), allocator),
1008 json.AddMember(
"data_type_",
1009 rapidjson::Value(data_type_str.c_str(), allocator),
1012 json.AddMember(
"data_format_",
1013 rapidjson::Value(data_format_str.c_str(), allocator),
1015 json.AddMember(
"h_", h_, allocator);
1016 json.AddMember(
"w_", w_, allocator);
1017 json.AddMember(
"normalize_", normalize_, allocator);
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);
1027 json.AddMember(
"scale_", scale_array, allocator);
1028 json.AddMember(
"mean_", mean_array, allocator);
1029 json.AddMember(
"std_", std_array, allocator);
1032 json.AddMember(
"border_type_",
1033 rapidjson::Value(border_type_str.c_str(), 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);
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);
1044 json.AddMember(
"border_val_", border_val_array, allocator);
1053 NNDEPLOY_LOGE(
"CvtResizePadNormTransParam::deserialize failed\n");
1056 if (json.HasMember(
"src_pixel_type_") &&
1057 json[
"src_pixel_type_"].IsString()) {
1061 if (json.HasMember(
"dst_pixel_type_") &&
1062 json[
"dst_pixel_type_"].IsString()) {
1066 if (json.HasMember(
"interp_type_") && json[
"interp_type_"].IsString()) {
1069 if (json.HasMember(
"data_type_") && json[
"data_type_"].IsString()) {
1072 if (json.HasMember(
"data_format_") && json[
"data_format_"].IsString()) {
1075 if (json.HasMember(
"h_") && json[
"h_"].IsInt()) {
1076 h_ = json[
"h_"].GetInt();
1078 if (json.HasMember(
"w_") && json[
"w_"].IsInt()) {
1079 w_ = json[
"w_"].GetInt();
1081 if (json.HasMember(
"normalize_") && json[
"normalize_"].IsBool()) {
1082 normalize_ = json[
"normalize_"].GetBool();
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();
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();
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();
1110 if (json.HasMember(
"border_type_") && json[
"border_type_"].IsString()) {
1113 if (json.HasMember(
"top_") && json[
"top_"].IsInt()) {
1114 top_ = json[
"top_"].GetInt();
1116 if (json.HasMember(
"bottom_") && json[
"bottom_"].IsInt()) {
1117 bottom_ = json[
"bottom_"].GetInt();
1119 if (json.HasMember(
"left_") && json[
"left_"].IsInt()) {
1120 left_ = json[
"left_"].GetInt();
1122 if (json.HasMember(
"right_") && json[
"right_"].IsInt()) {
1123 right_ = json[
"right_"].GetInt();
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();
1157 bool normalize_ =
true;
1158 float scale_[4] = {1.0f / 255.0f, 1.0f / 255.0f, 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};
1163 int top_left_x_ = 0;
1164 int top_left_y_ = 0;
1170 rapidjson::Value& json,
1171 rapidjson::Document::AllocatorType& allocator)
override {
1172 this->addRequiredParam(
"resize_h_");
1173 this->addRequiredParam(
"resize_w_");
1176 NNDEPLOY_LOGE(
"CvtResizeCropNormTransParam::serialize failed\n");
1180 json.AddMember(
"src_pixel_type_",
1181 rapidjson::Value(src_pixel_type_str.c_str(), allocator),
1184 json.AddMember(
"dst_pixel_type_",
1185 rapidjson::Value(dst_pixel_type_str.c_str(), allocator),
1188 json.AddMember(
"interp_type_",
1189 rapidjson::Value(interp_type_str.c_str(), allocator),
1192 json.AddMember(
"data_type_",
1193 rapidjson::Value(data_type_str.c_str(), allocator),
1196 json.AddMember(
"data_format_",
1197 rapidjson::Value(data_format_str.c_str(), allocator),
1200 json.AddMember(
"resize_h_", resize_h_, allocator);
1201 json.AddMember(
"resize_w_", resize_w_, allocator);
1202 json.AddMember(
"normalize_", normalize_, allocator);
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);
1212 json.AddMember(
"scale_", scale_array, allocator);
1213 json.AddMember(
"mean_", mean_array, allocator);
1214 json.AddMember(
"std_", std_array, allocator);
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);
1228 NNDEPLOY_LOGE(
"CvtResizeCropNormTransParam::deserialize failed\n");
1231 if (json.HasMember(
"src_pixel_type_") &&
1232 json[
"src_pixel_type_"].IsString()) {
1236 if (json.HasMember(
"dst_pixel_type_") &&
1237 json[
"dst_pixel_type_"].IsString()) {
1241 if (json.HasMember(
"interp_type_") && json[
"interp_type_"].IsString()) {
1244 if (json.HasMember(
"data_type_") && json[
"data_type_"].IsString()) {
1247 if (json.HasMember(
"data_format_") && json[
"data_format_"].IsString()) {
1251 if (json.HasMember(
"resize_h_") && json[
"resize_h_"].IsInt()) {
1252 resize_h_ = json[
"resize_h_"].GetInt();
1254 if (json.HasMember(
"resize_w_") && json[
"resize_w_"].IsInt()) {
1255 resize_w_ = json[
"resize_w_"].GetInt();
1257 if (json.HasMember(
"normalize_") && json[
"normalize_"].IsBool()) {
1258 normalize_ = json[
"normalize_"].GetBool();
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();
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();
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();
1286 if (json.HasMember(
"top_left_x_") && json[
"top_left_x_"].IsInt()) {
1287 top_left_x_ = json[
"top_left_x_"].GetInt();
1289 if (json.HasMember(
"top_left_y_") && json[
"top_left_y_"].IsInt()) {
1290 top_left_y_ = json[
"top_left_y_"].GetInt();
1292 if (json.HasMember(
"width_") && json[
"width_"].IsInt()) {
1293 width_ = json[
"width_"].GetInt();
1295 if (json.HasMember(
"height_") && json[
"height_"].IsInt()) {
1296 height_ = json[
"height_"].GetInt();
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...
virtual base::Status deserialize(rapidjson::Value &json) override
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
virtual base::Status deserialize(rapidjson::Value &json) override
virtual ~CvtNormTransParam()
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
CvtResizeCropNormTransParam()
virtual ~CvtResizeCropNormTransParam()
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
virtual base::Status deserialize(rapidjson::Value &json) override
CvtResizeNormTransParam()
virtual ~CvtResizeNormTransParam()
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator)
virtual base::Status deserialize(rapidjson::Value &json)
virtual ~CvtResizePadNormTransParam()
virtual base::Status deserialize(rapidjson::Value &json) override
CvtResizePadNormTransParam()
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
前处理通常由如下算子组合排列 cvtcolor resize padding warp_affine crop Normlize transpose dynamic_shape
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
virtual base::Status deserialize(rapidjson::Value &json) override
base::IntVector opt_shape_
virtual ~DynamicShapeParam()
base::IntVector min_shape_
virtual base::Status deserialize(rapidjson::Value &json) override
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
base::IntVector max_shape_
virtual base::Status deserialize(rapidjson::Value &json) override
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
virtual base::Status deserialize(rapidjson::Value &json) override
virtual base::Status deserialize(rapidjson::Value &json) override
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
virtual base::Status deserialize(rapidjson::Value &json) override
virtual ~TransposeParam()
virtual base::Status deserialize(rapidjson::Value &json) override
virtual ~WarpAffineCvtNormTransParam()
WarpAffineCvtNormTransParam()
virtual base::Status serialize(rapidjson::Value &json, rapidjson::Document::AllocatorType &allocator) override
#define NNDEPLOY_LOGE(fmt,...)
#define NNDEPLOY_CC_API
api
std::string dataFormatToString(DataFormat data_format)
PixelType stringToPixelType(const std::string &pixel_type_str)
BorderType stringToBorderType(const std::string &border_type_str)
DataType stringToDataType(const std::string &str)
std::vector< int > IntVector
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)
InterpType stringToInterpType(const std::string &interp_type_str)