Java OpenCV-4.0.0 图像处理09 图像混合以及亮度与对比度操作

Java OpenCV-4.0.0 图像混合以及亮度与对比度操作
图像混合 g(x)=(1-α) f_0 (x)+αf_1 (x) α(0~1)
图像亮度与对比度 g(i,j)=αf(i,j)+β其中α>α"," β是增益变量

/**
 * OpenCV-4.0.0 图像混合
 */
public static void addWeighted() {
    Mat src1 = Imgcodecs.imread("C:\\Users\\Administrator\\Pictures\\99.png");
    Mat src2 = Imgcodecs.imread("C:\\Users\\Administrator\\Pictures\\99.png");
    Mat image = new Mat(src1.size(), src1.type());
    double alpha = 0.5;
    Core.addWeighted(src1, 1 - alpha, src2, alpha, 0.0, image);
    HighGui.imshow("白蛇", image);
    HighGui.waitKey(1);
}

/**
 * OpenCV-4.0.0 图像亮度和对比度调节
 */
public static void light(){
	Mat src = Imgcodecs.imread("C:\\Users\\Administrator\\Pictures\\99.png");
	Mat dst = new Mat(src.size(), src.type());
	int channels = src.channels();//获取图像通道数
	double[] pixel = new double[3];
	float alpha=1.2f;
	float bate=30f;
	for (int i = 0, rlen = src.rows(); i < rlen; i++) {
		for (int j = 0, clen = src.cols(); j < clen; j++) {
			if (channels == 3) {//图片为3通道即平常的(R,G,B)
				pixel = src.get(i, j).clone();
				pixel[0] = pixel[0]*alpha+bate;//R
				pixel[1] = pixel[1]*alpha+bate;//G
				pixel[2] = pixel[2]*alpha+bate;//B
				dst.put(i, j, pixel);
			} else {//图片为单通道
				pixel=src.get(i, j).clone();
				dst.put(i, j, pixel[0]*alpha+bate);
			}
		}
	}
	HighGui.imshow("白蛇", dst);
	HighGui.waitKey(1);
}

Java OpenCV-4.0.0 图像处理09 图像混合以及亮度与对比度操作
Java OpenCV-4.0.0 图像处理09 图像混合以及亮度与对比度操作

相关文章:

  • 2021-07-20
  • 2021-05-13
  • 2021-11-08
  • 2021-07-07
  • 2022-12-23
  • 2021-12-05
  • 2022-12-23
  • 2022-01-17
猜你喜欢
  • 2022-12-23
  • 2021-09-08
  • 2022-01-19
  • 2021-10-07
  • 2022-02-23
  • 2021-07-19
  • 2021-06-23
相关资源
相似解决方案