美文网首页
Android NDK开发OpenCV系列:图像融合

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

作者: itfitness | 来源:发表于2022-02-24 14:44 被阅读0次

    目录

    效果展示

    函数讲解

    这里使用的是如下函数:

    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

    相关文章

      网友评论

          本文标题:Android NDK开发OpenCV系列:图像融合

          本文链接:https://www.haomeiwen.com/subject/pnvzlrtx.html