学习javacv之五:图像的Alpha融合

本文介绍了一种基于JavaCPP实现的图像融合技术,通过cvAddWeighted函数对两幅图像的指定区域进行加权混合,实现了区域级别的图像融合效果。文章详细展示了如何设置感兴趣区域并进行融合操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

根据输入参数对图像的某一区域进行部分融合:

package com.csdn.linghu.javacvlean03;

import org.bytedeco.javacpp.opencv_core.IplImage;
import static org.bytedeco.javacpp.opencv_highgui.*;
import static org.bytedeco.javacpp.opencv_core.*;


public class AlphaBlend {
public static void main(String[] args) {
	//原始图像
	IplImage srciImageOne = cvLoadImage("resources/srciImageOne.JPG"); 
	//等待融合的图像
	IplImage srciImageTwo = cvLoadImage("resources/srciImageTwo.JPG");
	if(srciImageOne ==null ||srciImageTwo==null){
		return;
	}
	//定义
	int x =100;
	int y=200;
	int height = srciImageOne.height();
	int width = srciImageOne.width();
	double alpha = 0.8;
	double beta = 1.0-alpha;
	//设置图像的感兴趣区域:二者的感兴趣区域大小要一样
	cvSetImageROI(
			//源图像
			srciImageOne,
			//感兴趣区域:一个矩形,从左上角(x,y)到右下角(width, height)的区域
			cvRect(x, y, width, height));
	//展示图像srciImageOne的感兴趣区域
	cvShowImage("AlphaROIOne", srciImageOne);
	cvSaveImage("resources/srcImageOne.jpg", srciImageOne);
	//设置srciImageTwo感兴趣的区域
	cvSetImageROI(srciImageTwo, cvRect(x, y, width, height));
	//展示图像srciImageTwo的感兴趣区域
	cvShowImage("AlphaROITwo", srciImageTwo);
	cvSaveImage("resources/srcImageTwo.jpg", srciImageTwo);
	cvAddWeighted(
			//图像1,所占权重
			srciImageOne, alpha, 
			//图像2,所占权重
			srciImageTwo, beta, 
			//常数值对输出结果有影响关系为:dst(I)=src1(I)*alpha+src2(I)*beta+gamma 
			0.6, 
			//输出结果
			srciImageTwo);
	//将结果恢复为原来的大小
	cvResetImageROI(srciImageTwo);
	cvShowImage("AlphaBlend", srciImageTwo);
	cvSaveImage("resources/srcImageTwo.jpg", srciImageTwo);
	cvWaitKey();
}
}

处理结果:

感兴趣图像AlphaROIOne


感兴趣图像AlphaROITwo



融合结果:


原始图片:



说明:在使用cvAddWeighted(...)进行融合时,感兴趣的区域必须要相同,不然无法融合

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值