Я хочу вернуть объект cv :: Mat с размерами [w] [h] [c], где w - ширина, h - высота, а c - каналы или глубина. Но компилятор выдает ошибку.
Это мой код:
cv::Mat three_channel_convolution(cv::Mat bgr_image, cv::Mat kernel)
{
cv::Mat feature_map[3];
cv::Mat bgr[3];
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;
}
В этой функции я хочу сделать свертку с фильтром (ядром) для каждого из трех каналов в изображении BGR. Таким образом, функция свертки возвращает результат операции в одном канале (A single 2D Mat [] []) и сохраняет его в массиве Feature_map Mat. Как мне вернуть этот массив Mat?
Затем в моей функции main () я вызываю функцию следующим образом:
feature_map = three_channel_convolution(image, kernels[0]);
Спасибо за помощь!
cv::Mat
- person 463035818_is_not_a_number   schedule 14.02.2019std::shared_ptr<cv::Mat>
илиstd::array<cv::Mat,3>
- person Victor Gubin   schedule 14.02.2019cv::Mat
, потому что выcv::split
входное изображение. Вам просто нужноcv::merge
снова их перед возвращением. - person Max Langhof   schedule 14.02.2019