1.图像混合
图像的混合就是将两张图片按照一定比例混合到一起,所有的比例之和为1
我们用 f0(x) 表示背景图, f1(x)表示前景图,用 g(x) 来表示输出图像,α表示比例( 0≤α≤1)
图像混合公式
函数调用:
void addWeighted(InputArray src1, double alpha, InputArray src2, double beta, double gamma, OutputArray dst, int dtype=-1)
src1:图片1
alpha:图片1的融合比例
src2:图片2
beta:图片2的融合比例,1-alpha
gamma:偏差
dst:输出图片
dtype:输出阵列的可选深度,有默认值-1。;当两个输入数组具有相同的深度时,这个参数设置为-1(默认值),即等同于src1.depth()
可以别表示为:dst = src1[I]alpha+ src2[I]beta + gamma
public class ROIActivity extends BaseActivity {
private ImageView ivROI;
private Button btnRoi;
private Mat bottomMat;
private Bitmap bottomBitmap;
private Mat markMat;
private Bitmap markBitmap;
private Mat roiMat;
private Bitmap roiBitmap;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_roi);
ivROI=findViewById(R.id.ivROI);
btnRoi=findViewById(R.id.btnRoi);
btnRoi.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
weighted();
}
});
}
private void weighted() {
bottomMat=new Mat();
markMat=new Mat();
roiMat=new Mat();
bottomBitmap=BitmapFactory.decodeResource(getResources(),R.mipmap.zhu);markBitmap=BitmapFactory.decodeResource(getResources(),R.mipmap.shuiyin);Utils.bitmapToMat(bottomBitmap,bottomMat);
Utils.bitmapToMat(markBitmap,markMat);
//bottomMat的0-markMat.rows()行,0-markMat.cols()列roiMat=bottomMat.submat(0,markMat.rows(),0,markMat.cols());
//加权Core.addWeighted(roiMat,1,markMat,0.3,0.,roiMat);
//转化为android识别的图像,注意宽高要和BottomMat一样roiBitmap=Bitmap.createBitmap(bottomMat.cols(),bottomMat.rows(), Bitmap.Config.RGB_565);
Utils.matToBitmap(bottomMat,roiBitmap);
ivROI.setImageBitmap(roiBitmap);
}
}