【发布时间】:2019-07-04 20:06:01
【问题描述】:
我正在尝试理解 opencv 4.0 中的 resize 函数,当我使用双线性时,我可以遵循 resize.cpp hal::resize 中发生的代码,(modules/imgproc/src)。但是当我更改为双三次时,它不会遵循相同的流程(即使代码具有 INTER_CUBIC 的条件)。我在 hal::resize 中使用 gdb 设置断点,对于双三次,它没有到达断点。
我试图找出代码在哪里运行,正在执行哪个部分。
当我调试时,我可以看到 bilinear 和 lanczos 的数据,但看不到 bicubic !但我假设它可能是 gdb 问题,数据是:Resize.cpp 对于线性:在 hal::resize.cpp:3706 的末尾
$1 = {0, 1, 2, 3, 4, 5, 9, 10, 11, 12}
(gdb) p yofs[0]@10
$2 = {0, 1, 3, 4, 6, 7, 9, 10, 12, 13}
(gdb) p ialpha[0]@10
$3 = {1536, 512, 1536, 512, 1536, 512, 512, 1536, 512, 1536}
(gdb) p ibeta[0]@10
$4 = {1536, 512, 512, 1536, 1536, 512, 512, 1536, 1536, 512}
(gdb)
for lanczos
(gdb) p xofs[0]@10
$5 = {0, 1, 2, 3, 4, 5, 9, 10, 11, 12}
(gdb) p yofs[0]@10
$6 = {0, 1, 3, 4, 6, 7, 9, 10, 12, 13}
(gdb) p ialpha[0]@10
$7 = {-31, 114, -312, 1830, 579, -188, 64, -8, -31, 114}
(gdb) p ibeta[0]@10
$8 = {-31, 114, -312, 1830, 579, -188, 64, -8, -8, 64}```
【问题讨论】: