2016-10-03 15 views
0

誰もがこのパッケージ化されたXamrinバージョンを使用しましたか? https://components.xamarin.com/view/emgucv-v3カメラのプレビューをポートレートAndroid OpenCVカメラとXamarinに回転

私はこのライセンスを最近購入しましたが、ここに記載されているものと全く同じ問題(Rotate camera preview to Portrait Android OpenCV Camera)を打っています。さまざまなアプローチを使用してきました。

最初に画面の向きを[風景]から[ポートレート]に変更しますが、これはストリームを同じ回転形式(90度)で表示するだけです。景観は私が望むように機能する唯一のものと思われます。

カメラオブジェクトを使用してカメラ自体を回転しようとしましたが、これで問題は解決されません。すなわち

camera.SetDisplayOrientation(90); 

私は実行が発生する場所を確認するには、この何回の膨大な数をdebugedしている、そして最初の画面が正しく設定されているようですが、時間によって

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

追加するために実行されますFPSテキストはそれを元に戻しました。

また、Matrixを使用して画像を反転しようとしましたが、フレームレートが約20FPSから約6FPSに低下します。これはあまりにも多くのことです。ヒット

これは本当に私のアプリを構築するための主要な障害物ですので、ここで本当に苦労しています。

私はXamarinをかなり新しくしていますので、どんな助けでも大歓迎です。

P.S.謝罪。私はこれが別のスレッド(Rotate camera preview to Portrait Android OpenCV Camera)でカバーされていることを知っていますが、そこにあるすべてのオプションを試しましたが、このエントリはEd Cotrell(Admin)によってそのスレッドから削除されました。

答えて

1

だから私はそれを持っていると思う!

XamarinのOpenCVサンプルでは、​​バッファからのRawストリームが使用され、デフォルトではカメラのUIレイアウトや設定/パラメータの向きに関係なく、90度の角度で表示されます。

だから、私はもともと私はネイティブAndroidのビットマップするために、次の画像オブジェクトを変換し、それを回転しProcessedCameraPreview

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

内のコードを作り直し。パフォーマンスヒットは巨大でした。だから、

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機能を実行するために必要なイメージオブジェクトを持っています。

P.S. -

また、パフォーマンスの影響は目に見えませんでした。

関連する問題