android - Xamarin OpenCV ICvCameraViewListener

标签 android opencv xamarin

有一段时间,我在尝试实现 ICvCameraViewListener 时遇到了问题。我继承了它,实现了它的方法,但它们根本没有被调用。尝试过 ActivityJavaCameraView

查看OpenCV for Android java示例代码,有一行: mOpenCvCameraView.setCvCameraViewListener(this); 但在JavaCameraViewCameraBridgeViewBase中都没有这样的方法。

我可以通过 OnPreviewFrame() 回调方法,但是如果我必须自己将 byte[] 转换为 Mat,那么 ICvCameraViewListener 接口(interface)的意义何在。

这种替代方法还给出了一些意想不到的结果。

最佳答案

AlessandroRizzotto 分享经验后在官方 Xamarin 论坛上,我们提出了这个问题的解决方案。

所以问题在于解决源 OpenCV 和转换后的代码之间的 API 差异。由于 setCvCameraViewListener 在 OpenCV 中设置为私有(private)/ protected ,因此未转换为 c#。为了克服这个问题,需要在 Binding 项目(包含 OpenCV 源代码的项目)中做一些额外的努力。

在 Transforms/Metadata.xml 中应添加下一个代码 fragment :

<add-node path="/api/package[@name='org.opencv.android']/class[@name='CameraBridgeViewBase']">
  <method name="setCvCameraViewListener" return="void" abstract="false" native="false" synchronized="false" static="false" final="false" deprecated="not deprecated" visibility="public" >
    <parameter name="listener" type="org.opencv.android.CameraBridgeViewBase.CvCameraViewListener"/>
  </method>
</add-node>

之后,您将能够访问缺少的方法,并且其他一切都像魅力一样工作。

整个讨论可以在这个address上找到。

关于android - Xamarin OpenCV ICvCameraViewListener,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29658440/

相关文章:

Android + Xamarin 推送通知自定义声音不会播放

android - 重用线程

android - Exoplayer - 如何检查 MP4 视频是否有音频?

安卓保存图片到sd卡报错

c++ - 如何使用OpenCV的归一化相关性?

c - 高斯混合 - C

c# - 使用 async/await 仍然会阻止 Xamarin.Android 上的 UI

android - 从 GetStringUTFChars JNI 得不到结果

python - 错误 : (-215:Assertion failed) npoints > 0 while working with contours using OpenCV

android - 如何获取 Xamarin.Android 的 Mono VM 的堆快照?