问题
csl::Tensor<T> weightsTensor;
T weight;
if (weight != 1.0) { //此处报错
}
if (nms_iou_threshold > 0) { //此处报错
auto output_mat = output_wrapper->getMutableHostMat();
CV_Assert(output_mat.type() == CV_32F);
for (int i = 0; i < input.get_axis_size(0); i++) {
auto sample_size = rows * cols * boxes_per_cell * cell_box_size;
do_nms_sort(reinterpret_cast<float*>(output_mat.data) + i * sample_size, rows * cols * boxes_per_cell, class_prob_cutoff, nms_iou_threshold);
}
}
解决方式:
确保!=运算符与相同类型的操作数一起使用,有助于编译器解决歧义。如果T不是double,请使用适当的类型转换替换static_cast<T>(1.0)。
if (weight != static_cast<T>(1.0)) {
}
if (nms_iou_threshold > static_cast<T>(0)) { //修改此处
auto output_mat = output_wrapper->getMutableHostMat();
CV_Assert(output_mat.type() == CV_32F);
for (int i = 0; i < input.get_axis_size(0); i++) {
auto sample_size = rows * cols * boxes_per_cell * cell_box_size;
do_nms_sort(reinterpret_cast<float*>(output_mat.data) + i * sample_size, rows * cols * boxes_per_cell, class_prob_cutoff, nms_iou_threshold);
}