소스 검색

Merge pull request #222 from syyxsxx/padding3

add padding im_vaule
Jason 5 년 전
부모
커밋
c1c91a7376
2개의 변경된 파일9개의 추가작업 그리고 1개의 파일을 삭제
  1. 7 0
      deploy/cpp/include/paddlex/transforms.h
  2. 2 1
      deploy/cpp/src/transforms.cpp

+ 7 - 0
deploy/cpp/include/paddlex/transforms.h

@@ -214,6 +214,12 @@ class Padding : public Transform {
         height_ = item["target_size"].as<std::vector<int>>()[1];
       }
     }
+    if (item["im_padding_value"].IsDefined()) {
+      im_value_ = item["im_padding_value"].as<std::vector<float>>();
+    }
+    else {
+      im_value_ = {0, 0, 0};
+    }
   }
   virtual bool Run(cv::Mat* im, ImageBlob* data);
 
@@ -221,6 +227,7 @@ class Padding : public Transform {
   int coarsest_stride_ = -1;
   int width_ = 0;
   int height_ = 0;
+  std::vector<float> im_value_;
 };
 /*
  * @brief

+ 2 - 1
deploy/cpp/src/transforms.cpp

@@ -110,8 +110,9 @@ bool Padding::Run(cv::Mat* im, ImageBlob* data) {
               << ", but they should be greater than 0." << std::endl;
     return false;
   }
+  cv::Scalar value = cv::Scalar(im_value_[0], im_value_[1], im_value_[2]);
   cv::copyMakeBorder(
-      *im, *im, 0, padding_h, 0, padding_w, cv::BORDER_CONSTANT, cv::Scalar(0));
+      *im, *im, 0, padding_h, 0, padding_w, cv::BORDER_CONSTANT, value);
   data->new_im_size_[0] = im->rows;
   data->new_im_size_[1] = im->cols;
   return true;