使用双三次c ++的resize函数的opencv代码流是什么?

时间:2019-07-04 20:06:01

标签: c++ opencv resize

我试图从opencv 4.0中了解resize函数,当我使用双线性时,我可以遵循resize.cpp hal :: resize(模块/ imgproc / src)中发生的代码。但是,当我更改为三次立方时,它不会遵循相同的流程(即使代码具有INTER_CUBIC的条件)。我在hal :: resize中使用gdb设置了断点,而对于三次立方,它没有达到断点。

我试图找出代码在哪里运行,正在执行哪一部分。

当我调试时,我可以看到双线性和lanczos的数据,但看不到双三次的数据!但我想这可能是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}```

1 个答案:

答案 0 :(得分:0)

好吧, 我想这是一个opencv编译问题,我只是将WITH_IPP OFF加上其他多线程标志设置为OFF,以确保我仅使用单线程,并且除了在配置文件中处于Debug模式外,还启用了ENABLE_PROFILING = ON。现在正在显示双三次数据。

cmake -D WITH_TBB = OFF -D WITH_OPENMP = OFF -D WITH_IPP = OFF -D ENABLE_PROFILING = ON -D CMAKE_BUILD_TYPE = Debug -D BUILD_EXAMPLES = OFF -D WITH_NVCUVID = OFF -D WITH_CUDA = OFF