Возвращаемое значение функции three_channel_convolution
равно cv::Mat
, но вы возвращаете cv::Mat[3]
.
Если вы хотите вернуть 3d-матрицу, вам нужно изменить сигнатуру функции на что-то вродеstd::array<cv::Mat, 3>
.Пожалуйста, имейте в виду, что это может иметь некоторые проблемы с производительностью.
std::array<cv::Mat, 3> three_channel_convolution(cv::Mat bgr_image, cv::Mat kernel) {
std::array<cv::Mat, 3> feature_map;
std::array<cv::Mat, 3> bgr;
cv::split(bgr_image, bgr);
for (uchar i = 0; i < 3; i++) {
feature_map[i] = one_channel_convolution(bgr[i], kernel);
std::string name_feature_map = "bgr_feature_map_" + std::to_string(i) + ".jpg";
cv::imwrite(name_feature_map, feature_map[i]);
}
return feature_map;
}
Ps.Пожалуйста, сообщите точное сообщение об ошибке в следующих сообщениях.