Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
PaddlePaddle
PaddleOCR
提交
24f8dfb7
P
PaddleOCR
项目概览
PaddlePaddle
/
PaddleOCR
大约 1 年 前同步成功
通知
1528
Star
32962
Fork
6643
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
108
列表
看板
标记
里程碑
合并请求
7
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
P
PaddleOCR
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
108
Issue
108
列表
看板
标记
里程碑
合并请求
7
合并请求
7
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
提交
24f8dfb7
编写于
1月 08, 2021
作者:
R
root
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Support fixed length TRT prediction
上级
1f99a635
变更
6
隐藏空白更改
内联
并排
Showing
6 changed file
with
47 addition
and
19 deletion
+47
-19
deploy/cpp_infer/include/preprocess_op.h
deploy/cpp_infer/include/preprocess_op.h
+3
-1
deploy/cpp_infer/src/main.cpp
deploy/cpp_infer/src/main.cpp
+1
-1
deploy/cpp_infer/src/ocr_cls.cpp
deploy/cpp_infer/src/ocr_cls.cpp
+1
-1
deploy/cpp_infer/src/ocr_det.cpp
deploy/cpp_infer/src/ocr_det.cpp
+2
-1
deploy/cpp_infer/src/ocr_rec.cpp
deploy/cpp_infer/src/ocr_rec.cpp
+1
-1
deploy/cpp_infer/src/preprocess_op.cpp
deploy/cpp_infer/src/preprocess_op.cpp
+39
-14
未找到文件。
deploy/cpp_infer/include/preprocess_op.h
浏览文件 @
24f8dfb7
...
...
@@ -47,18 +47,20 @@ public:
class
ResizeImgType0
{
public:
virtual
void
Run
(
const
cv
::
Mat
&
img
,
cv
::
Mat
&
resize_img
,
int
max_size_len
,
float
&
ratio_h
,
float
&
ratio_w
);
float
&
ratio_h
,
float
&
ratio_w
,
bool
use_tensorrt
);
};
class
CrnnResizeImg
{
public:
virtual
void
Run
(
const
cv
::
Mat
&
img
,
cv
::
Mat
&
resize_img
,
float
wh_ratio
,
bool
use_tensorrt
=
false
,
const
std
::
vector
<
int
>
&
rec_image_shape
=
{
3
,
32
,
320
});
};
class
ClsResizeImg
{
public:
virtual
void
Run
(
const
cv
::
Mat
&
img
,
cv
::
Mat
&
resize_img
,
bool
use_tensorrt
=
false
,
const
std
::
vector
<
int
>
&
rec_image_shape
=
{
3
,
48
,
192
});
};
...
...
deploy/cpp_infer/src/main.cpp
浏览文件 @
24f8dfb7
...
...
@@ -77,7 +77,7 @@ int main(int argc, char **argv) {
auto
end
=
std
::
chrono
::
system_clock
::
now
();
auto
duration
=
std
::
chrono
::
duration_cast
<
std
::
chrono
::
microseconds
>
(
end
-
start
);
std
::
cout
<<
"Cost"
std
::
cout
<<
"Cost
"
<<
double
(
duration
.
count
())
*
std
::
chrono
::
microseconds
::
period
::
num
/
std
::
chrono
::
microseconds
::
period
::
den
...
...
deploy/cpp_infer/src/ocr_cls.cpp
浏览文件 @
24f8dfb7
...
...
@@ -25,7 +25,7 @@ cv::Mat Classifier::Run(cv::Mat &img) {
int
index
=
0
;
float
wh_ratio
=
float
(
img
.
cols
)
/
float
(
img
.
rows
);
this
->
resize_op_
.
Run
(
img
,
resize_img
,
cls_image_shape
);
this
->
resize_op_
.
Run
(
img
,
resize_img
,
this
->
use_tensorrt_
,
cls_image_shape
);
this
->
normalize_op_
.
Run
(
&
resize_img
,
this
->
mean_
,
this
->
scale_
,
this
->
is_scale_
);
...
...
deploy/cpp_infer/src/ocr_det.cpp
浏览文件 @
24f8dfb7
...
...
@@ -61,7 +61,8 @@ void DBDetector::Run(cv::Mat &img,
cv
::
Mat
srcimg
;
cv
::
Mat
resize_img
;
img
.
copyTo
(
srcimg
);
this
->
resize_op_
.
Run
(
img
,
resize_img
,
this
->
max_side_len_
,
ratio_h
,
ratio_w
);
this
->
resize_op_
.
Run
(
img
,
resize_img
,
this
->
max_side_len_
,
ratio_h
,
ratio_w
,
this
->
use_tensorrt_
);
this
->
normalize_op_
.
Run
(
&
resize_img
,
this
->
mean_
,
this
->
scale_
,
this
->
is_scale_
);
...
...
deploy/cpp_infer/src/ocr_rec.cpp
浏览文件 @
24f8dfb7
...
...
@@ -33,7 +33,7 @@ void CRNNRecognizer::Run(std::vector<std::vector<std::vector<int>>> boxes,
float
wh_ratio
=
float
(
crop_img
.
cols
)
/
float
(
crop_img
.
rows
);
this
->
resize_op_
.
Run
(
crop_img
,
resize_img
,
wh_ratio
);
this
->
resize_op_
.
Run
(
crop_img
,
resize_img
,
wh_ratio
,
this
->
use_tensorrt_
);
this
->
normalize_op_
.
Run
(
&
resize_img
,
this
->
mean_
,
this
->
scale_
,
this
->
is_scale_
);
...
...
deploy/cpp_infer/src/preprocess_op.cpp
浏览文件 @
24f8dfb7
...
...
@@ -60,7 +60,8 @@ void Normalize::Run(cv::Mat *im, const std::vector<float> &mean,
}
void
ResizeImgType0
::
Run
(
const
cv
::
Mat
&
img
,
cv
::
Mat
&
resize_img
,
int
max_size_len
,
float
&
ratio_h
,
float
&
ratio_w
)
{
int
max_size_len
,
float
&
ratio_h
,
float
&
ratio_w
,
bool
use_tensorrt
)
{
int
w
=
img
.
cols
;
int
h
=
img
.
rows
;
...
...
@@ -89,14 +90,19 @@ void ResizeImgType0::Run(const cv::Mat &img, cv::Mat &resize_img,
resize_w
=
32
;
else
resize_w
=
(
resize_w
/
32
)
*
32
;
cv
::
resize
(
img
,
resize_img
,
cv
::
Size
(
resize_w
,
resize_h
));
ratio_h
=
float
(
resize_h
)
/
float
(
h
);
ratio_w
=
float
(
resize_w
)
/
float
(
w
);
if
(
!
use_tensorrt
)
{
cv
::
resize
(
img
,
resize_img
,
cv
::
Size
(
resize_w
,
resize_h
));
ratio_h
=
float
(
resize_h
)
/
float
(
h
);
ratio_w
=
float
(
resize_w
)
/
float
(
w
);
}
else
{
cv
::
resize
(
img
,
resize_img
,
cv
::
Size
(
640
,
640
));
ratio_h
=
float
(
640
)
/
float
(
h
);
ratio_w
=
float
(
640
)
/
float
(
w
);
}
}
void
CrnnResizeImg
::
Run
(
const
cv
::
Mat
&
img
,
cv
::
Mat
&
resize_img
,
float
wh_ratio
,
bool
use_tensorrt
,
const
std
::
vector
<
int
>
&
rec_image_shape
)
{
int
imgC
,
imgH
,
imgW
;
imgC
=
rec_image_shape
[
0
];
...
...
@@ -111,12 +117,27 @@ void CrnnResizeImg::Run(const cv::Mat &img, cv::Mat &resize_img, float wh_ratio,
resize_w
=
imgW
;
else
resize_w
=
int
(
ceilf
(
imgH
*
ratio
));
cv
::
resize
(
img
,
resize_img
,
cv
::
Size
(
resize_w
,
imgH
),
0.
f
,
0.
f
,
cv
::
INTER_LINEAR
);
if
(
!
use_tensorrt
)
{
cv
::
resize
(
img
,
resize_img
,
cv
::
Size
(
resize_w
,
imgH
),
0.
f
,
0.
f
,
cv
::
INTER_LINEAR
);
cv
::
copyMakeBorder
(
resize_img
,
resize_img
,
0
,
0
,
0
,
int
(
imgW
-
resize_img
.
cols
),
cv
::
BORDER_CONSTANT
,
{
127
,
127
,
127
});
}
else
{
int
k
=
int
(
img
.
cols
*
32
/
img
.
rows
);
if
(
k
>=
100
)
{
cv
::
resize
(
img
,
resize_img
,
cv
::
Size
(
100
,
32
),
0.
f
,
0.
f
,
cv
::
INTER_LINEAR
);
}
else
{
cv
::
resize
(
img
,
resize_img
,
cv
::
Size
(
k
,
32
),
0.
f
,
0.
f
,
cv
::
INTER_LINEAR
);
cv
::
copyMakeBorder
(
resize_img
,
resize_img
,
0
,
0
,
0
,
int
(
100
-
k
),
cv
::
BORDER_CONSTANT
,
{
127
,
127
,
127
});
}
}
}
void
ClsResizeImg
::
Run
(
const
cv
::
Mat
&
img
,
cv
::
Mat
&
resize_img
,
bool
use_tensorrt
,
const
std
::
vector
<
int
>
&
rec_image_shape
)
{
int
imgC
,
imgH
,
imgW
;
imgC
=
rec_image_shape
[
0
];
...
...
@@ -130,11 +151,15 @@ void ClsResizeImg::Run(const cv::Mat &img, cv::Mat &resize_img,
else
resize_w
=
int
(
ceilf
(
imgH
*
ratio
));
cv
::
resize
(
img
,
resize_img
,
cv
::
Size
(
resize_w
,
imgH
),
0.
f
,
0.
f
,
cv
::
INTER_LINEAR
);
if
(
resize_w
<
imgW
)
{
cv
::
copyMakeBorder
(
resize_img
,
resize_img
,
0
,
0
,
0
,
imgW
-
resize_w
,
cv
::
BORDER_CONSTANT
,
cv
::
Scalar
(
0
,
0
,
0
));
if
(
!
use_tensorrt
)
{
cv
::
resize
(
img
,
resize_img
,
cv
::
Size
(
resize_w
,
imgH
),
0.
f
,
0.
f
,
cv
::
INTER_LINEAR
);
if
(
resize_w
<
imgW
)
{
cv
::
copyMakeBorder
(
resize_img
,
resize_img
,
0
,
0
,
0
,
imgW
-
resize_w
,
cv
::
BORDER_CONSTANT
,
cv
::
Scalar
(
0
,
0
,
0
));
}
}
else
{
cv
::
resize
(
img
,
resize_img
,
cv
::
Size
(
100
,
32
),
0.
f
,
0.
f
,
cv
::
INTER_LINEAR
);
}
}
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录