Merge pull request #238 from asmorkalov:android_resolution_sample
This commit is contained in:
commit
f4433ff9c4
samples/android/tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5
46
samples/android/tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5/Sample5CameraControl.java
46
samples/android/tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5/Sample5CameraControl.java
@ -13,12 +13,14 @@ import org.opencv.android.CameraBridgeViewBase.CvCameraViewListener;
|
|||||||
|
|
||||||
import android.annotation.SuppressLint;
|
import android.annotation.SuppressLint;
|
||||||
import android.app.Activity;
|
import android.app.Activity;
|
||||||
|
import android.hardware.Camera.Size;
|
||||||
import android.os.Bundle;
|
import android.os.Bundle;
|
||||||
import android.os.Environment;
|
import android.os.Environment;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
import android.view.Menu;
|
import android.view.Menu;
|
||||||
import android.view.MenuItem;
|
import android.view.MenuItem;
|
||||||
import android.view.MotionEvent;
|
import android.view.MotionEvent;
|
||||||
|
import android.view.SubMenu;
|
||||||
import android.view.SurfaceView;
|
import android.view.SurfaceView;
|
||||||
import android.view.View;
|
import android.view.View;
|
||||||
import android.view.View.OnTouchListener;
|
import android.view.View.OnTouchListener;
|
||||||
@ -29,7 +31,11 @@ public class Sample5CameraControl extends Activity implements CvCameraViewListen
|
|||||||
private static final String TAG = "OCVSample::Activity";
|
private static final String TAG = "OCVSample::Activity";
|
||||||
|
|
||||||
private SampleJavaCameraView mOpenCvCameraView;
|
private SampleJavaCameraView mOpenCvCameraView;
|
||||||
|
private List<Size> mResolutionList;
|
||||||
private MenuItem[] mEffectMenuItems;
|
private MenuItem[] mEffectMenuItems;
|
||||||
|
private SubMenu mColorEffectsMenu;
|
||||||
|
private MenuItem[] mResolutionMenuItems;
|
||||||
|
private SubMenu mResolutionMenu;
|
||||||
|
|
||||||
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
|
private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
|
||||||
@Override
|
@Override
|
||||||
@ -109,22 +115,50 @@ public class Sample5CameraControl extends Activity implements CvCameraViewListen
|
|||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mColorEffectsMenu = menu.addSubMenu("Color Effect");
|
||||||
mEffectMenuItems = new MenuItem[effects.size()];
|
mEffectMenuItems = new MenuItem[effects.size()];
|
||||||
|
|
||||||
int idx = 0;
|
int idx = 0;
|
||||||
ListIterator<String> itr = effects.listIterator();
|
ListIterator<String> effectItr = effects.listIterator();
|
||||||
while(itr.hasNext()) {
|
while(effectItr.hasNext()) {
|
||||||
String element = itr.next();
|
String element = effectItr.next();
|
||||||
mEffectMenuItems[idx] = menu.add(element);
|
mEffectMenuItems[idx] = mColorEffectsMenu.add(1, idx, Menu.NONE, element);
|
||||||
idx++;
|
idx++;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
mResolutionMenu = menu.addSubMenu("Resolution");
|
||||||
|
mResolutionList = mOpenCvCameraView.getResolutionList();
|
||||||
|
mResolutionMenuItems = new MenuItem[mResolutionList.size()];
|
||||||
|
|
||||||
|
ListIterator<Size> resolutionItr = mResolutionList.listIterator();
|
||||||
|
idx = 0;
|
||||||
|
while(resolutionItr.hasNext()) {
|
||||||
|
Size element = resolutionItr.next();
|
||||||
|
mResolutionMenuItems[idx] = mResolutionMenu.add(2, idx, Menu.NONE,
|
||||||
|
Integer.valueOf(element.width).toString() + "x" + Integer.valueOf(element.height).toString());
|
||||||
|
idx++;
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean onOptionsItemSelected(MenuItem item) {
|
public boolean onOptionsItemSelected(MenuItem item) {
|
||||||
Log.i(TAG, "called onOptionsItemSelected; selected item: " + item);
|
Log.i(TAG, "called onOptionsItemSelected; selected item: " + item);
|
||||||
mOpenCvCameraView.setEffect((String) item.getTitle());
|
if (item.getGroupId() == 1)
|
||||||
Toast.makeText(this, mOpenCvCameraView.getEffect(), Toast.LENGTH_SHORT).show();
|
{
|
||||||
|
mOpenCvCameraView.setEffect((String) item.getTitle());
|
||||||
|
Toast.makeText(this, mOpenCvCameraView.getEffect(), Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
else if (item.getGroupId() == 2)
|
||||||
|
{
|
||||||
|
int id = item.getItemId();
|
||||||
|
Size resolution = mResolutionList.get(id);
|
||||||
|
mOpenCvCameraView.setResolution(resolution);
|
||||||
|
resolution = mOpenCvCameraView.getResolution();
|
||||||
|
String caption = Integer.valueOf(resolution.width).toString() + "x" + Integer.valueOf(resolution.height).toString();
|
||||||
|
Toast.makeText(this, caption, Toast.LENGTH_SHORT).show();
|
||||||
|
}
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
18
samples/android/tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5/SampleJavaCameraView.java
18
samples/android/tutorial-5-cameracontrol/src/org/opencv/samples/tutorial5/SampleJavaCameraView.java
@ -10,6 +10,7 @@ import android.graphics.Bitmap;
|
|||||||
import android.graphics.BitmapFactory;
|
import android.graphics.BitmapFactory;
|
||||||
import android.hardware.Camera;
|
import android.hardware.Camera;
|
||||||
import android.hardware.Camera.PictureCallback;
|
import android.hardware.Camera.PictureCallback;
|
||||||
|
import android.hardware.Camera.Size;
|
||||||
import android.util.AttributeSet;
|
import android.util.AttributeSet;
|
||||||
import android.util.Log;
|
import android.util.Log;
|
||||||
|
|
||||||
@ -34,11 +35,26 @@ public class SampleJavaCameraView extends JavaCameraView {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public void setEffect(String effect) {
|
public void setEffect(String effect) {
|
||||||
Camera.Parameters params = mCamera.getParameters();
|
Camera.Parameters params = mCamera.getParameters();
|
||||||
params.setColorEffect(effect);
|
params.setColorEffect(effect);
|
||||||
mCamera.setParameters(params);
|
mCamera.setParameters(params);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public List<Size> getResolutionList() {
|
||||||
|
return mCamera.getParameters().getSupportedPreviewSizes();
|
||||||
|
}
|
||||||
|
|
||||||
|
public void setResolution(Size resolution) {
|
||||||
|
disconnectCamera();
|
||||||
|
mMaxHeight = resolution.height;
|
||||||
|
mMaxWidth = resolution.width;
|
||||||
|
connectCamera(getWidth(), getHeight());
|
||||||
|
}
|
||||||
|
|
||||||
|
public Size getResolution() {
|
||||||
|
return mCamera.getParameters().getPreviewSize();
|
||||||
|
}
|
||||||
|
|
||||||
public void takePicture(final String fileName) {
|
public void takePicture(final String fileName) {
|
||||||
Log.i(TAG, "Tacking picture");
|
Log.i(TAG, "Tacking picture");
|
||||||
PictureCallback callback = new PictureCallback() {
|
PictureCallback callback = new PictureCallback() {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user