|
|
@ -1,10 +1,12 @@ |
|
|
|
package org.opencv.samples.tutorial5; |
|
|
|
package org.opencv.samples.tutorial5; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
import java.util.List; |
|
|
|
|
|
|
|
import java.util.ListIterator; |
|
|
|
|
|
|
|
|
|
|
|
import org.opencv.android.BaseLoaderCallback; |
|
|
|
import org.opencv.android.BaseLoaderCallback; |
|
|
|
import org.opencv.android.LoaderCallbackInterface; |
|
|
|
import org.opencv.android.LoaderCallbackInterface; |
|
|
|
import org.opencv.android.OpenCVLoader; |
|
|
|
import org.opencv.android.OpenCVLoader; |
|
|
|
import org.opencv.core.Mat; |
|
|
|
import org.opencv.core.Mat; |
|
|
|
import org.opencv.android.CameraBridgeViewBase; |
|
|
|
|
|
|
|
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener; |
|
|
|
import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener; |
|
|
|
|
|
|
|
|
|
|
|
import android.app.Activity; |
|
|
|
import android.app.Activity; |
|
|
@ -14,14 +16,12 @@ import android.view.Menu; |
|
|
|
import android.view.MenuItem; |
|
|
|
import android.view.MenuItem; |
|
|
|
import android.view.SurfaceView; |
|
|
|
import android.view.SurfaceView; |
|
|
|
import android.view.WindowManager; |
|
|
|
import android.view.WindowManager; |
|
|
|
import android.widget.Toast; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public class Sample5CustomCamera extends Activity implements CvCameraViewListener { |
|
|
|
public class Sample5CustomCamera extends Activity implements CvCameraViewListener { |
|
|
|
private static final String TAG = "OCVSample::Activity"; |
|
|
|
private static final String TAG = "OCVSample::Activity"; |
|
|
|
|
|
|
|
|
|
|
|
private CameraBridgeViewBase mOpenCvCameraView; |
|
|
|
private CustomJavaCameraView mOpenCvCameraView; |
|
|
|
private boolean mIsJavaCamera = true; |
|
|
|
private MenuItem[] mEffectMenuItems; |
|
|
|
private MenuItem mItemSwitchCamera = null; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { |
|
|
|
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { |
|
|
|
@Override |
|
|
|
@Override |
|
|
@ -53,8 +53,7 @@ public class Sample5CustomCamera extends Activity implements CvCameraViewListene |
|
|
|
|
|
|
|
|
|
|
|
setContentView(R.layout.tutorial5_surface_view); |
|
|
|
setContentView(R.layout.tutorial5_surface_view); |
|
|
|
|
|
|
|
|
|
|
|
if (mIsJavaCamera) |
|
|
|
mOpenCvCameraView = (CustomJavaCameraView) findViewById(R.id.tutorial5_activity_java_surface_view); |
|
|
|
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.tutorial5_activity_java_surface_view); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); |
|
|
|
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); |
|
|
|
|
|
|
|
|
|
|
@ -82,44 +81,35 @@ public class Sample5CustomCamera extends Activity implements CvCameraViewListene |
|
|
|
mOpenCvCameraView.disableView(); |
|
|
|
mOpenCvCameraView.disableView(); |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public void onCameraViewStarted(int width, int height) { |
|
|
|
public boolean onCreateOptionsMenu(Menu menu) { |
|
|
|
|
|
|
|
Log.i(TAG, "called onCreateOptionsMenu"); |
|
|
|
|
|
|
|
mItemSwitchCamera = menu.add("Switch camera"); |
|
|
|
|
|
|
|
return true; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
public void onCameraViewStopped() { |
|
|
|
public boolean onOptionsItemSelected(MenuItem item) { |
|
|
|
|
|
|
|
String toastMesage = new String(); |
|
|
|
|
|
|
|
Log.i(TAG, "called onOptionsItemSelected; selected item: " + item); |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (item == mItemSwitchCamera) { |
|
|
|
|
|
|
|
mOpenCvCameraView.setVisibility(SurfaceView.GONE); |
|
|
|
|
|
|
|
mIsJavaCamera = !mIsJavaCamera; |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if (mIsJavaCamera) { |
|
|
|
|
|
|
|
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.tutorial5_activity_java_surface_view); |
|
|
|
|
|
|
|
toastMesage = "Java Camera"; |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE); |
|
|
|
public Mat onCameraFrame(Mat inputFrame) { |
|
|
|
mOpenCvCameraView.setCvCameraViewListener(this); |
|
|
|
return inputFrame; |
|
|
|
mOpenCvCameraView.enableView(); |
|
|
|
|
|
|
|
Toast toast = Toast.makeText(this, toastMesage, Toast.LENGTH_LONG); |
|
|
|
|
|
|
|
toast.show(); |
|
|
|
|
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
return true; |
|
|
|
@Override |
|
|
|
} |
|
|
|
public boolean onCreateOptionsMenu(Menu menu) { |
|
|
|
|
|
|
|
List<String> effects = mOpenCvCameraView.getEffectList(); |
|
|
|
|
|
|
|
|
|
|
|
public void onCameraViewStarted(int width, int height) { |
|
|
|
mEffectMenuItems = new MenuItem[effects.size()]; |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
public void onCameraViewStopped() { |
|
|
|
int idx = 0; |
|
|
|
|
|
|
|
ListIterator<String> itr = effects.listIterator(); |
|
|
|
|
|
|
|
while(itr.hasNext()) { |
|
|
|
|
|
|
|
String element = itr.next(); |
|
|
|
|
|
|
|
mEffectMenuItems[idx] = menu.add(element); |
|
|
|
|
|
|
|
idx++; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
public Mat onCameraFrame(Mat inputFrame) { |
|
|
|
public boolean onOptionsItemSelected(MenuItem item) { |
|
|
|
return inputFrame; |
|
|
|
Log.i(TAG, "called onOptionsItemSelected; selected item: " + item); |
|
|
|
|
|
|
|
mOpenCvCameraView.setEffect((String) item.getTitle()); |
|
|
|
|
|
|
|
return true; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|