OpenCV3 Java分割图像 提取图像的RGB三原色(Core.split)
一个普通的彩色图像的每个像素点是由RGB三种颜色构成的,那么这种图像就是3通道图像;多通道图像,单独的R色、G色和B色都分别称为一个单通道图像。
OpenCV中的Mat类型可以理解为一种多维多通道的矩阵,如果一个普通的彩色图像读进来后赋值给一个Mat类型的对象M,那么这个M就是一个二维数组,这个二维数组中的每个元素都是一个含有三个RGB值得数据,那这个M就是一个二维三通道的矩阵。
代码案例:
package com.what21.opencv.demo; import java.util.List; import org.opencv.core.Core; import org.opencv.core.Mat; import org.opencv.imgcodecs.Imgcodecs; public class SplitRGB { public static void main(String[] args) { try{ System.loadLibrary(Core.NATIVE_LIBRARY_NAME); Mat src=Imgcodecs.imread("D:/ShareData/internet.jpg"); //读取图像到矩阵中,取灰度图像 if(src.empty()){ return ; } List<Mat> dst=new java.util.ArrayList<Mat>(3); Core.split(src, dst); Imgcodecs.imwrite("D:/ShareData/b.jpg", dst.get(0)); Imgcodecs.imwrite("D:/ShareData/g.jpg", dst.get(1)); Imgcodecs.imwrite("D:/ShareData/r.jpg", dst.get(2)); }catch(Exception e){ e.printStackTrace(); } } }
评论