天天看点

Java OpenCV-4.0.0 图像处理02 图像像素点的获取与操作

Java OpenCV-4.0.0 图像处理8 图像像素点的获取与操作

java OpenCV-4.0.0 获取图像像素点并对像素点进行操作

package com.xu.image;

import org.opencv.core.Core;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.highgui.HighGui;
import org.opencv.imgcodecs.Imgcodecs;
import org.opencv.imgproc.Imgproc;

/**  
 * 
 * @Title: OpenCV.java   
 * @Package com.xu.opencv   
 * @Description: TODO   
 * @author: xuhyacinth     
 * @date: 2019年1月17日 下午7:54:15   
 * @version V-1.0 
 * @Copyright: 2019 xuhyacinth
 *
 */
public class Test {

	static {
		//在使用OpenCV前必须加载Core.NATIVE_LIBRARY_NAME类,否则会报错
		System.loadLibrary(Core.NATIVE_LIBRARY_NAME);
	}

	public static void main(String[] args) {
		getPixelImage();
	}

	/**
	 * OpenCV-4.0.0 获取图像像素点
	 * @return: void  
	 * @date: 2019年1月17日 下午8:24:07
	 */
	public static void getPixelImage_1() {
		Mat src = Imgcodecs.imread("C:\\Users\\Administrator\\Pictures\\0001.jpg");
		Mat dst = new Mat(src.size(),src.type());

		int channels = src.channels();//获取图像通道数
		double[] pixel = new double[3];//用于存放像素点

		for (int i = 0, rlen = src.rows(); i < rlen; i++) {
			for (int j = 0, clen = src.cols(); j < clen; j++) {
				if (channels == 3) {//图片为3通道即平常的(B,G,R)
					pixel = src.get(i, j).clone();
					pixel[0] = 255 - pixel[0];//B
					pixel[1] = 255 - pixel[1];//G
					pixel[2] = 255 - pixel[2];//R
					dst.put(i, j, pixel);
				} else {//图片为单通道
					dst.put(i, j, src.get(i, j).clone());
				}
			}
		}
		Imgproc.resize(src, src, new Size(src.cols()/2,src.rows()/2));
		HighGui.imshow("图片测试", dst);
		HighGui.waitKey(0);
	}

	/**
	 * OpenCV-4.0.0 获取图像像素点
	 * @return: void  
	 * @date: 2019年11月24日 下午8:24:07
	 */
	public static void getPixelImage_2() {
		Mat src = Imgcodecs.imread("C:\\Users\\Administrator\\Pictures\\0001.jpg");
		
		Mat dst = new Mat(src.size(),src.type());
		double[] pixel = new double[3];//用于存放像素点

		for (int i = 0 ,row = (int) src.size().height; i < row; i++) {
			for (int j = 0,col = (int) src.size().width; j < col; j++) {
				pixel = src.get(i, j).clone();
				pixel[0] = 255 - pixel[0];//B
				pixel[1] = 255 - pixel[1];//G
				pixel[2] = 255 - pixel[2];//R
				dst.put(i, j, pixel);
			}
		}
		HighGui.imshow("图片测试", dst);
		HighGui.waitKey(0);
	}

}


           
Java OpenCV-4.0.0 图像处理02 图像像素点的获取与操作