当前位置: 首页 > 知识库问答 >
问题:

旋转相机预览到肖像AndroidOpenCV相机和Xamarin

王飞虎
2023-03-14

有没有人使用过这个打包的Xamrin版本?https://components.xamarin.com/view/emgucv-v3

我最近购买了这个许可证,并击中了与这里描述的完全相同的问题(旋转相机预览到肖像Android OpenCV相机)。一直在使用各种方法。

首先转屏方向从风景到肖像,但这只是以相同的旋转形式(90度)显示流。景观似乎是唯一一个我喜欢的作品。

我尝试使用相机对象旋转相机本身,但这也不能解决问题。即

camera.SetDisplayOrientation(90);

我已经对此进行了大量调试,以查看执行发生在何处,似乎最初屏幕设置正确,但到了

protected override void OnDraw(Android.Graphics.Canvas canvas)

运行以添加FPS文本,并将其翻转回来。

我还尝试使用矩阵翻转图像,但这将帧速率从约20FPS降至约6FPS。这太过分了。成功

在这里真的很挣扎,因为这现在是构建我的应用程序的主要绊脚石。

我是相当新的Xamarin,所以任何帮助都非常感谢。

P. S.道歉。我知道这已经被另一个线程(旋转相机预览到肖像Android OpenCV相机),我已经尝试了那里的所有选项,但此条目被删除的埃德Cotrell(管理员)从该线程,我被告知开始一个新的。

共有1个答案

彭英逸
2023-03-14

好的,我想我明白了!!!

Xamarin中的OpenCV示例似乎使用来自缓冲区的原始流,默认情况下,无论您有什么方向的UI布局或相机的设置/参数,都以90度角进入。

因此,我在ProcessedCameraPreview中重新编写了代码

protected override void OnDraw(Android.Graphics.Canvas canvas)

最初,我将下面的图像对象转换为原生Android位图并旋转。表演大受欢迎。

Image<Bgr, byte> image = _bgrBuffers.GetBuffer(0);

所以,我想如果我做到了以下几点:-

Image<Bgr, byte> rotateImage = image.Rotate(90, new Bgr(System.Drawing.Color.Black));
canvas.DrawBitmap(rotateImage.ToBitmap(), 0, 0, _paint);

它将根据需要在90度角上渲染。绩效影响并不明显。

我现在有了一个图像对象,我需要它来执行我想要使用的OpenCV函数。

另一个值得注意的方法是使用以下方法旋转画布:-

Matrix matrix = new graphics.Matrix();
matrix.PostRotate(90);
DrawBitmap(image.ToBitmap(), matrix, _paint);

同样,性能影响不明显。

 类似资料:
  • 我发现了一个非常有趣的问题。在拍摄相机照片后(我将设备保持在纵向模式,不旋转),给定的照片有时会旋转,但并不总是旋转。我知道,有些设备总是提供旋转的照片,但它可以使用exif或mediastore信息进行旋转。但在这种情况下,exif和mediastore表示方向为0,但图像是旋转的。最令人沮丧的是,这完全是随机发生的。代码非常简单: 有人见过这个问题吗?我在操作系统更新(4.1.1)后体验了Ga

  • 当我捕获照片时,在某些设备中,它会以景观模式存储在某些设备中,它会存储肖像。我想让图像在肖像模式无论如何。为此,我尝试获取图像的数据,并相应地将其旋转到肖像模式。但在一些设备,如三星,VIVO的方向值得到“0”。我不知道该怎么处理那个值。如果我90,那么一些设备将解决此问题,而另一些设备将向上保存照片。 我从Xamarin那里得到这个主意。Andoid图像旋转。但不知怎的,我不能再继续下去了。会有

  • 请帮助正确配置Android摄像头(在HTC Desire 2.3.3上测试),以便在旋转(人像)模式下从摄像头预览。预览必须占用屏幕的一半以下,它的宽度必须等于设备的宽度,缩放必须根据相机的纵横比动态设置。我的当前代码: 活动布局: AndroidManifest配置为肖像: 你可以看到图像的比例不对。如何使以适当的比例显示旋转和缩放相机预览? 部分代码取自Mixare开源项目,http://w

  • 我创建了一个相机应用程序,我希望我的应用程序在所有4种可能的方向上打开,并相应地更新相机预览。为此,我使用了以下我复制的方法:Android-相机预览是横向的 我已经测试了这些值,并在三星galaxy tab2上进行了测试,最终获得了正确的方向,一切正常。当我在htc one的手机上试用时,它根本不起作用!!!!!所有的e方向都是完全错误的!所以我得出结论,thre必须是2种类型的设备(或更多…请

  • 我试图创建一个第一人称相机。我从我的XNA项目中提取了一段代码,并试图将其转换为java(LWJGL)。 如果我移动鼠标,俯仰和偏航会增加/减少。在开始运行我的游戏时,它运行良好,但在一些动作后,我无法向下或向上看。如果我的位置是 性能良好的XNA代码: 所以我发现LWJGL和XNA在旋转矩阵方面有一些不同。 Java: 结果: {1.0 0.0 0.0 0 0.0}{0.0 0.3299931-

  • 在我的应用程序中,用户从相机捕获图像或从图库中选择图像,然后将其转换为pdf并上载到服务器,现在我的问题是,从相机捕获的图像在某些设备上旋转,我有代码尝试解决此问题,但它不起作用 任何建议或问题在哪里,没有错误代码或任何东西