Opencv or unity中Mat+-*/运算为哪般

前言:这是导向滤波实现的磨皮效果,还不错哦。


引子:导向滤波算法原作者的matlab代码中大量使用矩阵元素间的+-*/,然而,opencv for unity源自opencv for java,做矩阵对应元素的+-*/是极其痛苦的事情。
正文:opencv for java或opencv for unity中的Mat +-*/,对应元素的数学运算。
上代码:

Mat mat = new Mat(3, 4, CvType.CV_8UC4,new Scalar(1,1,1,1));
        print(mat.dump());
        Mat mat2 = new Mat(3, 4, CvType.CV_8UC4, new Scalar(21, 21, 2, 2));
        print(mat2.dump());
        Mat matO = new Mat(3, 4, CvType.CV_8UC4);
        print(matO.dump());
        Core.add(mat, mat2, matO);
        print(matO.dump());
        Core.subtract(mat2, mat, matO);
        print(matO.dump());
        Core.multiply(mat, mat2, matO);
        print(matO.dump());
        Core.divide(mat2, mat2, matO);
        print(matO.dump());
        matO = mat2.mul(mat);
        print(matO.dump());


Core.add      Core.subtract     Core.multiply或Mat.mul       Core.divide对应加减乘除

### 集成和使用 OpenCV #### 安装插件 为了在 Unity 中集成并使用 OpenCV 功能,需先安装名为 “OpenCV plus Unity”的插件。此插件提供与 OpenCV 库交互的能力,从而允许开发者利用 OpenCV 提供的强大计算机视觉算法[^1]。 #### 导入必要的资源包 完成上述操作之后,下一步就是导入特定版本的 OpenCV 资源包至项目中。这一步骤对于确保后续开发过程中能够顺利访问所需函数至关重要。 #### 实现跨平台通信机制 针对 Android 平台的应用构建需求,Unity 可借助 WebCamTexture 类捕获实时影像数据,并将其传递给 C++ 层面编写的 OpenCV 处理模块执行相应运算逻辑;处理完毕的数据再反馈回 Unity 场景用于可视化展示。在此期间,双方通过 .so 文件形式建立高效的接口连接方式来实现高效稳定的双向通讯流程[^2]。 #### 解决常见兼容性难题 当尝试将原生 SDK 封装后的 AAR 组件引入 Unity 工程时可能会遭遇诸如 opencvactivity 显示覆盖以及样式匹配失败等问题。面对这种情况建议仔细查阅官方文档或者社区论坛寻求解决方案,同时也可以考虑调整配置参数或采用替代方案绕过障碍继续推进项目进展[^3]。 ```cpp // 示例代码片段:创建一个简单的C++函数以供Unity调用 extern "C" { JNIEXPORT void JNICALL Java_com_example_MyClass_processImage(JNIEnv* env, jobject /* this */, jlong matAddrRgba){ Mat& img = *(Mat*)matAddrRgba; cvtColor(img, img, COLOR_RGBA2GRAY); } } ```
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值