opencvでアンドロイドのカメラプレビューを非表示にしようとしています。私はxamarin C#でアンドロイド(Javaバインディングライブラリ)のopencv3.1.0を使用しています。私はここですべての質問を見上げるが、私はこれをしない。私の見解では、自分のActivity onCreateメソッドでorg.opencv.android.JavaCameraViewを持っています.GOBまたはInvisibleに可視性を変更すると、CameraBridgeViewBaseで取得します。OnCameraFrameメソッドは起動しません。 OnCameraFrameメソッドでnullを返すと、プレビューは表示されませんが、ビュー(textview、button)の他のコンポーネントも表示されません。私はカメラのプレビューを隠す必要がありますが、まだopencv4androidでプレビューコールバックを受け取ります。 My活動でOpencv 3.1.0 Androidカメラのプレビューを非表示にする
私の見解では<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent">
<org.opencv.android.JavaCameraView
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:id="@+id/game_screen_surface_view" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:id="@+id/game_screen_text_view" />
</LinearLayout>
[Activity(Label = "GameActivity")]
public class GameActivity : Activity, CameraBridgeViewBase.ICvCameraViewListener2
{
private CameraBridgeViewBase mOpenCvCameraView;
private Mat mIntermediateMat;
private TextView _wordText;
private Callback mLoaderCallback;
private int tryCount = 15;
private int currentTry = 0;
private int circleCount = 0;
Dictionary<int, char> letters = new Dictionary<int, char>();
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
Window.AddFlags(WindowManagerFlags.KeepScreenOn);
SetContentView(Resource.Layout.game_screen);
mOpenCvCameraView = FindViewById<CameraBridgeViewBase>(Resource.Id.game_screen_surface_view);
_wordText = FindViewById<TextView>(Resource.Id.game_screen_text_view);
mOpenCvCameraView.Visibility = ViewStates.Visible;//If set GONE or Invisible OnCameraFrame Method not firing
mOpenCvCameraView.SetCvCameraViewListener2(this);
mLoaderCallback = new Callback(this, mOpenCvCameraView);
}
protected override void OnPause()
{
base.OnPause();
if (mOpenCvCameraView != null)
mOpenCvCameraView.DisableView();
}
protected override void OnResume()
{
base.OnResume();
if (!OpenCVLoader.InitDebug())
{
OpenCVLoader.InitAsync(OpenCVLoader.OpencvVersıon300, this, mLoaderCallback);
}
else
{
mLoaderCallback.OnManagerConnected(LoaderCallbackInterface.Success);
}
}
protected override void OnDestroy()
{
base.OnDestroy();
if (mOpenCvCameraView != null)
mOpenCvCameraView.DisableView();
}
public Mat OnCameraFrame(CameraBridgeViewBase.ICvCameraViewFrame inputFrame)
{
Mat rgba = inputFrame.Rgba();
Mat mat = rgba;
//some opengl code.
return mat; //If I return null preview is not showing but If ay add button to view it is not showing too
}
public void OnCameraViewStarted(int width, int height)
{
mIntermediateMat = new Mat();
}
public void OnCameraViewStopped()
{
// Explicitly deallocate Mats
if (mIntermediateMat != null)
mIntermediateMat.Release();
mIntermediateMat = null;
}
private char GetLetter(int r = 0, int g = 0, int b = 0)
{
return letters[getEqualofRGB(0, 0, 2)];
}
}
class Callback : BaseLoaderCallback
{
private readonly CameraBridgeViewBase mOpenCvCameraView;
public Callback(Context context, CameraBridgeViewBase cameraView)
: base(context)
{
mOpenCvCameraView = cameraView;
}
public override void OnManagerConnected(int status)
{
switch (status)
{
case LoaderCallbackInterface.Success:
{
mOpenCvCameraView.EnableView();
}
break;
default:
{
base.OnManagerConnected(status);
}
break;
}
}
}
どうもありがとうございました。
あなたの現在のコードを投稿できますか? – Giorgi
@Giorgi私は自分のアクティビティとビューを追加しました。ありがとう – user3665099