Создать одну многоканальную матрицу из нескольких многоканальных матриц - PullRequest
0 голосов
/ 10 апреля 2019

Я пытаюсь создать многоканальную матрицу из нескольких других многоканальных матриц. Функция, предоставляемая OpenCV cv::merge(), состоит в объединении нескольких одноканальных матриц в одну. При использовании для объединения многоканальных матриц это дает неполный / неправильный результат.

Мой подход к этой проблеме:

std::vector<cv::Mat> inputMats; // vector of BGR matrices (3 channels each)
std::vector<cv::Mat> splitMats;
for (const auto& mat : matrices)
{
    std::vector<cv::Mat> channels;
    cv::split(mat, channels);
    splitMats.insert(splitMats.end(), channels.begin(), channels.end());
}
cv::Mat result;
cv::merge(splitMats, result);

Этот подход слишком медленный, хотя. Чтобы объединить 6 цветовых матриц в одну 18-канальную матрицу (Intel Core i5 3,2 ГГц), требуется 27 мс. Есть ли другой подход?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...