Opencv: как разбить мат на цветные каналы BGR - PullRequest
0 голосов
/ 20 сентября 2018

Я кодирую эту систему на Java, и я хотел бы разбить мат на 3 отдельных цветовых канала, чтобы я мог работать с каждым цветным каналом отдельно.В идеале, когда изображение разделяется, его каналы также сохраняются в виде циновок.Моя конечная цель - превратить определенные цветовые каналы в хеш-код для последующей обработки изображений.Я не уверен, как именно, и мне было интересно, если кто-нибудь знает о некоторых функциях, которые могут быть полезны.Любая помощь будет принята с благодарностью.Если что-то неясно, дайте мне знать.Я с удовольствием объясню больше.

Ответы [ 2 ]

0 голосов
/ 19 августа 2019

Кажется, работает следующий код:

ArrayList<Mat> dst = new ArrayList<>(3);
Core.split(src, dst); // Mat src, ArrayList<Mat> dst
0 голосов
/ 21 сентября 2018

Существует функция cv::split(), которая разбивает RGB Mat (или любой многоканальный Mat) на массив одноканальных Mats.После разделения вы можете запустить алгоритм хеширования для отдельных каналов.

Ссылки на документацию cv::split() для OpenCV 2 и OpenCV 3 .

Если ваша обработка зависит от времени, вы можете подумать о том, может ли быть более эффективно обрабатывать каналы на месте (т. Е. Чередовать друг с другом).Это зависит от того, как вы хотите обработать каналы.

...