inRange()使用
这个函数就是判断src中每一个像素是否在[lowerb,upperb]之间,注意集合的开闭。如果结果为是,那么在dst相应像素位置填上255,反之则是0。
通道分离
List<Mat> mv = new ArrayList<Mat>();
Core.split(src, mv);
int index = 1;
for(Mat m : mv) {
ImageUI outputWin = new ImageUI();
outputWin.imshow("channel-" + index ,m);
index++;
}
通道合并
merge()函数的功能是,将多个数组组合合并成一个多通道的数组。
List<Mat> mv = new ArrayList<Mat>();
Core.split(src, mv);
int index = 1;
for(Mat m : mv) {
if(index == 1 || index == 3) {
m.setTo(new Scalar(0, 0, 0));
}
ImageUI outputWin = new ImageUI();
outputWin.imshow("channel-" + index ,m);
index++;
}
//merge
Mat dst = new Mat(src.size(), src.type());
Core.merge(mv, dst);
ImageUI mergeWIN = new ImageUI();
mergeWIN.imshow("merge-result", dst);
mixchannels函数
从输入中拷贝某通道到输出中特定的通道
//mix channels
List<Mat> channels = new ArrayList<Mat>();
channels.add(new Mat(src.size(), CvType.CV_8UC1));
Core.mixChannels(mv, channels, new MatOfInt(2, 0));
ImageUI mixWIN = new ImageUI();
mixWIN.imshow("mix-reslut", channels.get(0));