796 if (norm_box !=
nullptr) {
797 word_box = *norm_box;
799 float word_middle = (word_box.left() + word_box.right()) / 2.0f;
800 float input_y_offset = 0.0f;
803 if (row ==
nullptr) {
804 word_middle = word_box.left();
805 input_y_offset = word_box.bottom();
806 final_y_offset = 0.0f;
808 input_y_offset = row->base_line(word_middle) + baseline_shift;
810 for (
auto blob :
blobs) {
811 TBOX blob_box = blob->bounding_box();
812 float mid_x = (blob_box.left() + blob_box.right()) / 2.0f;
814 float blob_scale = scale;
818 }
else if (row !=
nullptr) {
819 baseline = row->base_line(mid_x) + baseline_shift;
827 blob->Normalize(block,
nullptr,
nullptr, word_middle,
baseline, blob_scale, blob_scale, 0.0f,
828 final_y_offset, inverse, pix);
830 if (word_denorm !=
nullptr) {
831 word_denorm->SetupNormalization(block,
nullptr,
nullptr, word_middle, input_y_offset, scale,
832 scale, 0.0f, final_y_offset);
833 word_denorm->set_inverse(inverse);
834 word_denorm->set_pix(pix);
T ClipToRange(const T &x, const T &lower_bound, const T &upper_bound)
const int kBlnBaselineOffset
TBOX bounding_box() const
std::vector< TBLOB * > blobs