Closed Gavin1937 closed 5 months ago
gflags的double精度设置的很高,所以在将double转成字符串之后就会变得很难看:
-cls_thresh (Threshold of cls_thresh.) type: double
default: 0.90000000000000002
-det_db_box_thresh (Threshold of det_db_box_thresh.) type: double
default: 0.59999999999999998
-det_db_thresh (Threshold of det_db_thresh.) type: double
default: 0.29999999999999999
问题再这里
它用的是 "%.17g"
,在这里的意思是:保留小数点后至少17位数。
只需将其改成 "%g"
,就可以让它保留小数点后尽可能短的位数了。
改完之后长这样:
-cls_thresh (Threshold of cls_thresh.) type: double default: 0.9
-det_db_box_thresh (Threshold of det_db_box_thresh.) type: double
default: 0.6
-det_db_thresh (Threshold of det_db_thresh.) type: double default: 0.3
我再加个commit把它加上
WITH_STATIC_LIB=OFF
时,无法链接paddle_inference.dll,MSVC会报错:解决方法也很简单:
https://github.com/hiroi-sora/PaddleOCR-json/blob/fe697e6a8c2226ca32bab0643ef1dd4444e488b3/cpp/CMakeLists.txt#L244-L245
把这行的
CMAKE_SHARED_LIBRARY_SUFFIX
换成CMAKE_STATIC_LIBRARY_SUFFIX
就行了。 这里是在编译后链接的环节里链接paddle_inference.lib
而不是paddle_inference.dll
。即使cmake参数设置了WITH_STATIC_LIB=OFF
也得链接静态库paddle_inference.lib
,要不然就会出错。我以前也有遇到MSVC的这个奇怪的行为:即使设置成动态链接,在编译后链接的环节也要链接到一个静态库。当然,MSVC会正常生成动态库,并且软件也需要和动态库放一起才能工作。 在这个项目里,Windows下无论怎么设置
WITH_STATIC_LIB
都需要动态库,不把paddle_inference文件夹下的动态库放到exe旁边就会报错。