Я пытаюсь использовать computeBinaryMap после computeSalidity, но получаю сигнал SIGABRT.
Я пытаюсь обнаружить людей на тепловых изображениях и для этого использую карты значимости. После моего вызова computeSalidity я хочу использовать BinaryMap для фильтрации теплых областей, так как просто пороговое значение даст слишком много сегментов. Мои входные и выходные маты имеют одинаковый размер и тип. Я пытался использовать их без инициализации, но это ничего не изменило.
Я использую OpenCV 3.3.1 на Ubuntu16 с ROS Kinetic.
void computeSaliencyThresh(const cv::Mat *input, cv::Mat *output_saliency, cv::Mat *output_threshold) {
cv::saliency::StaticSaliencyFineGrained saliency_algorithm;
if (!saliency_algorithm.computeSaliency(*input, *output_saliency)) {
ROS_ERROR("Saliency could not be calculated.");
}
ROS_INFO("Saliency calculated.");
if (!saliency_algorithm.computeBinaryMap(*output_saliency, *output_threshold)) { // <- this line sends the signal
ROS_ERROR("Thresholding for saliency could not be calculated.");
}
ROS_INFO("Thresholding calculated.");
}
Функция должна возвращаться с заполненными output_salidity и output_thresh, но она отправляет сигнал SIGABRT без дополнительной информации, кроме отправки вызовом computeBinaryMap.