Android NDK开发OpenCV系列:图像融合

目录

效果展示

函数讲解

这里使用的是如下函数:

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

案例源码

https://gitee.com/itfitness/opencv-demo

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容