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);
}