Чтобы отделить оттенок канала от HSV изображения, here это код, используя mixChannels
функцию:OpenCV сплит против mixChannels
/// Transform it to HSV
cvtColor(src, hsv, CV_BGR2HSV);
/// Use only the Hue value
hue.create(hsv.size(), hsv.depth());
int ch[] = { 0, 0 };
mixChannels(&hsv, 1, &hue, 1, ch, 1);
Но я знаю split
функция может также сделать это:
vector<Mat> chs;
split(hsv, chs);
Mat hue = chs[0];
Это ОК? Если это то же самое, я думаю, что метод разделения более чист. Я прав?
Вы довольно правы, 'split()' используется для разделения всех каналов многоканальной матрицы на одноканальные матрицы. С другой стороны, если вас интересует только один канал, вы можете использовать 'mixChannels()'. Таким образом, вам не нужно выделять память для других каналов, как в случае с 'split()'. – bikz05
Хороший ответ! Вы можете ответить на него, чтобы я мог принять его. – tidy