A
AllenWalker
Neues Mitglied
- 0
Hallo,
bin neu hier hier im Forum und Programmieranfänger mit dem Android SDK.
Für ein Projekt im Studium möchte ich gerne eingegebene Werte für Parameter über ein Intent an die Startactivity geben für die Eingrenzung des HSV Farbraumes mittels OpenCV. Die Startactivity zeigt die RGB bzw. die HSV Kamera an. Ein weiterer Menüeintrag ruft die Activity auf um die Parameter einzugeben. Wenn ich die Parameter eingegeben habe und auf den Button "Übernehmen" klicke, bekomme ich via Toast den Default-Wert angezeigt.
MainActivity.java
activity_main.xml
ParameterActivity.java
activity_parameter.xml
Danke sehr,
Gruß,
AllenWalker
bin neu hier hier im Forum und Programmieranfänger mit dem Android SDK.
Für ein Projekt im Studium möchte ich gerne eingegebene Werte für Parameter über ein Intent an die Startactivity geben für die Eingrenzung des HSV Farbraumes mittels OpenCV. Die Startactivity zeigt die RGB bzw. die HSV Kamera an. Ein weiterer Menüeintrag ruft die Activity auf um die Parameter einzugeben. Wenn ich die Parameter eingegeben habe und auf den Button "Übernehmen" klicke, bekomme ich via Toast den Default-Wert angezeigt.
MainActivity.java
Code:
package com.example.objekttracking;
import org.opencv.android.BaseLoaderCallback;
import org.opencv.android.CameraBridgeViewBase;
import org.opencv.android.CameraBridgeViewBase.CvCameraViewFrame;
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener2;
import org.opencv.android.LoaderCallbackInterface;
import org.opencv.android.OpenCVLoader;
import org.opencv.core.CvType;
import org.opencv.core.Mat;
import org.opencv.imgproc.Imgproc;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.util.Log;
import android.view.Menu;
import android.view.MenuItem;
import android.view.SurfaceView;
import android.view.WindowManager;
import android.widget.Toast;
public class MainActivity extends Activity implements CvCameraViewListener2 {
private static final String TAG = "Objekttracking::Activity";
private CameraBridgeViewBase mOpenCvCameraView;
private MenuItem mItemPreviewHSV, mItemPreviewRGBA, mItemParameter;
private Mat mRGBMat;
private static final int VIEW_MODE_RGBA = 0;
private static final int VIEW_MODE_HSV = 1;
private int mViewMode;
private int h_min, h_max, s_min, s_max, v_min, v_max;
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
@Override
public void onManagerConnected(int status) {
switch (status) {
case LoaderCallbackInterface.SUCCESS:
{
Log.i(TAG, "OpenCV loaded successfully");
mOpenCvCameraView.enableView();
} break;
default:
{
super.onManagerConnected(status);
} break;
}
}
};
@Override
protected void onCreate(Bundle savedInstanceState) {
Log.i(TAG, "called onCreate");
super.onCreate(savedInstanceState);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.activity_main);
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.activity_main_java_surface_view);
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
mOpenCvCameraView.setCvCameraViewListener(this);
// h_min = 0;
// h_max = 0;
// s_min = 0;
// s_max = 0;
// v_min = 0;
// v_max = 0;
}
@Override
public void onPause()
{
super.onPause();
if (mOpenCvCameraView != null)
mOpenCvCameraView.disableView();
}
@Override
public void onResume()
{
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
Intent intent = getIntent();
h_min = intent.getIntExtra("h_min",0);
h_max = intent.getIntExtra("h_max",0);
s_min = intent.getIntExtra("s_min",0);
s_max = intent.getIntExtra("s_max",0);
v_min = intent.getIntExtra("v_min",0);
v_max = intent.getIntExtra("v_max",0);
String toastMesage = "H_Min: " + h_min + " H_Max: " + h_max + "\n";
toastMesage = toastMesage + "S_Min: " + s_min + " S_Max: " + s_max + "\n";
toastMesage = toastMesage + "V_Min: " + v_min + " V_Max: " + v_max;
Toast toast = Toast.makeText(this, toastMesage, Toast.LENGTH_LONG);
toast.show();
}
public void onDestroy() {
super.onDestroy();
if (mOpenCvCameraView != null)
mOpenCvCameraView.disableView();
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
Log.i(TAG, "called onCreateOptionsMenu");
mItemPreviewRGBA = menu.add("Preview RGBA");
mItemPreviewHSV = menu.add("Preview HSV");
mItemParameter = menu.add("HSV Parameter");
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
String toastMesage = new String();
Log.i(TAG, "called onOptionsItemSelected; selected item: " + item);
if (item == mItemPreviewRGBA) {
mViewMode = VIEW_MODE_RGBA;
toastMesage = "RGB";
}
else if (item == mItemPreviewHSV) {
mViewMode = VIEW_MODE_HSV;
toastMesage = "HSV";
}
else if (item == mItemParameter) {
Intent intent = new Intent(this, ParameterActivity.class);
startActivity(intent);
toastMesage = "HSV Parameter";
}
Toast toast = Toast.makeText(this, toastMesage, Toast.LENGTH_LONG);
toast.show();
return true;
}
@Override
public void onCameraViewStarted(int width, int height) {
mRGBMat = new Mat(height, width, CvType.CV_8UC4);
}
@Override
public void onCameraViewStopped() {
// TODO Auto-generated method stub
}
@Override
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
final int viewMode = mViewMode;
switch (viewMode) {
case VIEW_MODE_HSV: Imgproc.cvtColor(inputFrame.rgba(), mRGBMat, Imgproc.COLOR_RGB2HSV, 4); break;
case VIEW_MODE_RGBA: mRGBMat = inputFrame.rgba(); break;
}
return mRGBMat;
}
}
activity_main.xml
Code:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:opencv="http://schemas.android.com/apk/res-auto"
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:visibility="gone"
android:id="@+id/activity_main_java_surface_view"
opencv:show_fps="true"
opencv:camera_id="any" />
</LinearLayout>
ParameterActivity.java
Code:
package com.example.objekttracking;
import android.os.Bundle;
import android.app.Activity;
import android.content.Intent;
import android.view.Menu;
import android.view.View;
import android.widget.EditText;
public class ParameterActivity extends Activity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_parameter);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.parameter, menu);
return true;
}
public void sendMessage(View view) {
Intent intent = new Intent(this, MainActivity.class);
EditText h_min_wert = (EditText) findViewById(R.id.h_min_wert);
EditText h_max_wert = (EditText) findViewById(R.id.h_max_wert);
EditText s_min_wert = (EditText) findViewById(R.id.s_min_wert);
EditText s_max_wert = (EditText) findViewById(R.id.s_max_wert);
EditText v_min_wert = (EditText) findViewById(R.id.v_min_wert);
EditText v_max_wert = (EditText) findViewById(R.id.v_max_wert);
String h_min = h_min_wert.getText().toString();
String h_max = h_max_wert.getText().toString();
String s_min = s_min_wert.getText().toString();
String s_max = s_max_wert.getText().toString();
String v_min = v_min_wert.getText().toString();
String v_max = v_max_wert.getText().toString();
intent.putExtra("h_min", h_min);
intent.putExtra("h_max", h_max);
intent.putExtra("s_min", s_min);
intent.putExtra("s_max", s_max);
intent.putExtra("v_min", v_min);
intent.putExtra("v_max", v_max);
startActivity(intent);
}
}
activity_parameter.xml
Code:
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:paddingLeft="16dp"
android:paddingRight="16dp"
android:paddingTop="16dp"
tools:context=".ParamaterActivity" >
<TextView
android:id="@+id/titel"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:text="@string/hsv_paramter_einstellen"
android:textStyle="bold"
android:textSize="20sp" />
<EditText
android:id="@+id/h_min_wert"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:layout_below="@id/titel"
android:hint="@string/h_min_wert" />
<EditText
android:id="@+id/h_max_wert"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:layout_below="@id/h_min_wert"
android:hint="@string/h_max_wert" />
<EditText
android:id="@+id/s_min_wert"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:layout_below="@id/h_max_wert"
android:hint="@string/s_min_wert" />
<EditText
android:id="@+id/s_max_wert"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:layout_below="@id/s_min_wert"
android:hint="@string/h_max_wert" />
<EditText
android:id="@+id/v_min_wert"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:layout_below="@id/s_max_wert"
android:hint="@string/v_min_wert" />
<EditText
android:id="@+id/v_max_wert"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:inputType="numberDecimal"
android:layout_below="@id/v_min_wert"
android:hint="@string/v_max_wert" />
<Button
android:layout_width="135dp"
android:layout_height="wrap_content"
android:layout_below="@id/v_max_wert"
android:layout_centerHorizontal="true"
android:text="@string/uebernehmen"
android:onClick="sendMessage" />
</RelativeLayout>
Danke sehr,
Gruß,
AllenWalker