Opencv:如何将Mat拆分为BGR颜色通道

时间:2018-09-20 15:35:47

标签: java opencv image-processing mat

我正在用Java对这个系统进行编码,我想将Mat分成3个特定的颜色通道,以便可以分别在每个颜色通道上工作。
理想情况下,在分割图像时,其通道也将存储为Mats。我的最终目标是将特定的颜色通道转换为哈希码,以便以后进行图像处理。
我不确定确切如何,并且想知道是否有人知道某些有用的功能。
任何帮助将不胜感激。如果有任何不清楚的地方,请通知我。我会很乐意解释更多。

2 个答案:

答案 0 :(得分:0)

有一个cv::split()函数,它将RGB Mat(或任何多通道Mat)分割为单通道Mat数组。拆分后,您可以在各个通道上运行哈希算法。

链接到OpenCV 2OpenCV 3cv::split()文档。

如果处理对时间敏感,则可以考虑就地处理(即相互交错)通道是否更有效。这取决于您要如何处理频道。

答案 1 :(得分:0)

似乎以下代码有效:

ArrayList<Mat> dst = new ArrayList<>(3);
Core.split(src, dst); // Mat src, ArrayList<Mat> dst