目录
效果展示
函数讲解
这里使用的是如下函数:
CV_EXPORTS_W void addWeighted(InputArray src1, double alpha, InputArray src2,
double beta, double gamma, OutputArray dst, int dtype = -1);
其中参数如下:
src1:第一张源图像
alpha:第一张图像占的比重
src2:第二张源图像
beta:第二张图像占的比重
gamma:该值越大图像越白,大于等于255时图像全白
dst:合成的目标图像
实现代码
这里要注意的是两张融合的图像大小要调整为一致,不一致的话会出现错误
extern "C"
JNIEXPORT jobject JNICALL
Java_com_itfitness_cppdemoone_activity_AddWeightActivity_imageAddWeight(JNIEnv *env, jobject thiz,
jobject bitmap_src,
jobject bitmap_src2) {
//源图像
Mat src,src2;
//将Bitmap转换为Mat
BitmapToMat(env,bitmap_src,src, JNI_FALSE);
BitmapToMat(env,bitmap_src2,src2, JNI_FALSE);
//将src2的大小调整为与src一样大
AndroidBitmapInfo info;
if(AndroidBitmap_getInfo(env, bitmap_src, &info) >= 0){
resize(src2,src2,Size(info.width,info.height));
//添加权重进行融合
addWeighted(src,0.8,src2,0.2,0,src);
}
//将Mat转换为Bitmap
MatToBitmap(env,src,bitmap_src, JNI_FALSE);
//释放Mat
src.release();
return bitmap_src;
}
网友评论