vector<tuple<float, int, int>> Matcher::LSS_R_Fast2_Dist_eigen(vector<tuple<float, int, int>> &corr, SingleTemplate & latent_template, SingleTemplate & rolled_template, float d_thr)
时间: 2024-04-12 17:33:04 浏览: 107
这段代码定义了一个名为Matcher::LSS_R_Fast2_Dist_eigen的函数,该函数接受以下参数:
- 一个引用类型的vector<tuple<float, int, int>>类型的参数corr,用于存储一组元组,每个元组包含一个浮点数和两个整数。
- 一个SingleTemplate类型的引用参数latent_template,表示一个单独的模板。
- 一个SingleTemplate类型的引用参数rolled_template,表示一个滚动的模板。
- 一个浮点数类型的参数d_thr,表示一个阈值。
函数返回一个vector<tuple<float, int, int>>类型的对象。
该函数的作用是通过使用特定的算法和计算方法,在corr中筛选并返回满足一定条件的元组。具体的逻辑和实现需要查看函数内部的代码。
相关问题
int d_thr = 30; vector<tuple<float, int, int>> corr2 = LSS_R_Fast2_Dist_lookup(corr, latent_texture_template, rolled_texture_template, d_thr); t[n_time] = high_resolution_clock::now(); time_span = t[n_time] - t[n_time-1]; time[n_time-1]+=time_span.count() ; // second order graph matching: distance 二阶图匹配:距离 n_time++; vector<tuple<float, int, int>> corr3 = LSS_R_Fast2(corr2, latent_texture_template, rolled_texture_template, d_thr); t[n_time] = high_resolution_clock::now(); time_span = t[n_time] - t[n_time-1]; time[n_time-1]+=time_span.count() ; // second order graph matching: original 二阶图匹配:初始 n_time++; float score = 0.0; for(i=0; i<corr3.size(); ++i) { score += get<0>(corr3[i]); } return score;
这段代码是一个函数的实现,其中包含了一系列操作:
1. 定义了一个整型变量`d_thr`并赋值为30。
2. 调用了函数`LSS_R_Fast2_Dist_lookup`,并将返回结果赋给了`corr2`。该函数接受一些参数(`corr`、`latent_texture_template`、`rolled_texture_template`和`d_thr`),并返回一个包含元组(tuple)的向量。
3. 计算了时间间隔,并将其添加到时间数组`time`中。
4. 调用了函数`LSS_R_Fast2`,并将返回结果赋给了`corr3`。该函数接受一些参数(`corr2`、`latent_texture_template`、`rolled_texture_template`和`d_thr`),并返回一个包含元组(tuple)的向量。
5. 定义了一个浮点型变量`score`并赋值为0.0。
6. 使用循环遍历`corr3`中的元组,并将每个元组中的第一个元素与`score`相加。
7. 返回计算得到的`score`。
这段代码的功能是对纹理模板进行匹配,并计算得分。具体的逻辑和实现细节需要查看函数的调用和定义。
In file included from /home/yhdr/2-test-2023-06_v3/sent.h:24:0, from /home/yhdr/2-test-2023-06_v3/sent.cpp:1: /usr/include/c++/7/thread: In instantiation of ‘struct std::thread::_Invoker<std::tuple<void (*)(double*, double&, double&, double&, double&, double&), double**, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double> > >’: /usr/include/c++/7/thread:127:22: required from ‘std::thread::thread(_Callable&&, _Args&& ...) [with _Callable = void (&)(double*, double&, double&, double&, double&, double&); _Args = {double**, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>}]’ /home/yhdr/2-test-2023-06_v3/sent.cpp:18:153: required from here /usr/include/c++/7/thread:240:2: error: no matching function for call to ‘std::thread::_Invoker<std::tuple<void (*)(double*, double&, double&, double&, double&, double&), double**, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double> > >::_M_invoke(std::thread::_Invoker<std::tuple<void (*)(double*, double&, double&, double&, double&, double&), double**, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double> > >::_Indices)’ operator()() ^~~~~~~~ /usr/include/c++/7/thread:231:4: note: candidate: template<long unsigned int ..._Ind> decltype (std::__invoke((_S_declval<_Ind>)()...)) std::thread::_Invoker<_Tuple>::_M_invoke(std::_Index_tuple<_Ind ...>) [with long unsigned int ..._Ind = {_Ind ...}; _Tuple = std::tuple<void (*)(double*, double&, double&, double&, double&, double&), double**, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double>, std::reference_wrapper<double> >] _M_invoke(_Index_tuple<_Ind...>)
这个编译错误看起来是在创建一个std::thread对象时出现了问题。它指出无法匹配std::thread::_Invoker模板的_M_invoke函数的参数列表。这通常是因为您的函数参数与std::thread的参数不匹配,或者您的函数参数中有无法转换的类型。
请检查您的函数参数类型是否与std::thread需要的参数类型相匹配。如果您的函数需要接受其他参数类型,请尝试将它们转换为std::reference_wrapper或其他可转换的类型。您可能还需要检查您的函数参数数量是否正确。
如果您需要更多的帮助,请提供更多的代码和上下文,我可以更好地帮助您解决这个问题。
阅读全文