opencv split vs mixChannels



要从HSV图像中分离色调通道,以下是使用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()那样为其他通道分配内存。

保持简单并使用extractChannel,它为您封装了mixChannels

cv::Mat hue;
int cn = 0; // hue
cv::extractChannel(hsv, hue, cn);

相关内容

  • 没有找到相关文章

最新更新