Code review coments fixed. Lint wornings fixed.

This commit is contained in:
Alexander Smorkalov
2012-10-23 17:00:14 +04:00
committed by Andrey Kamaev
parent 4c06d0834e
commit a942747046
28 changed files with 103 additions and 118 deletions

View File

@@ -1,4 +1,4 @@
package org.opencv.framework;
package org.opencv.android;
import java.util.List;
@@ -26,7 +26,7 @@ import android.view.SurfaceView;
* The clients shall implement CvCameraViewListener
* TODO: add method to control the format in which the frames will be delivered to CvCameraViewListener
*/
public abstract class OpenCvCameraBridgeViewBase extends SurfaceView implements SurfaceHolder.Callback {
public abstract class CameraBridgeViewBase extends SurfaceView implements SurfaceHolder.Callback {
private static final int MAX_UNSPECIFIED = -1;
@@ -40,7 +40,7 @@ public abstract class OpenCvCameraBridgeViewBase extends SurfaceView implements
private Bitmap mCacheBitmap;
public OpenCvCameraBridgeViewBase(Context context, AttributeSet attrs) {
public CameraBridgeViewBase(Context context, AttributeSet attrs) {
super(context, attrs);
getHolder().addCallback(this);
mMaxWidth = MAX_UNSPECIFIED;
@@ -74,7 +74,7 @@ public abstract class OpenCvCameraBridgeViewBase extends SurfaceView implements
private static final int STOPPED = 0;
private static final int STARTED = 1;
private static final String TAG = "OpenCvCameraBridge";
private static final String TAG = "CameraBridge";
private CvCameraViewListener mListener;
private int mState = STOPPED;

View File

@@ -1,4 +1,4 @@
package org.opencv.framework;
package org.opencv.android;
import java.io.IOException;
import java.util.List;
@@ -29,10 +29,10 @@ import org.opencv.imgproc.Imgproc;
* When frame is delivered via callback from Camera - it processed via OpenCV to be
* converted to RGBA32 and then passed to the external callback for modifications if required.
*/
public class OpenCvJavaCameraView extends OpenCvCameraBridgeViewBase implements PreviewCallback {
public class JavaCameraView extends CameraBridgeViewBase implements PreviewCallback {
private static final int MAGIC_TEXTURE_ID = 10;
private static final String TAG = "OpenCvJavaCameraView";
private static final String TAG = "JavaCameraView";
private Mat mBaseMat;
private byte mBuffer[];
@@ -55,7 +55,7 @@ public class OpenCvJavaCameraView extends OpenCvCameraBridgeViewBase implements
private Camera mCamera;
public OpenCvJavaCameraView(Context context, AttributeSet attrs) {
public JavaCameraView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@@ -159,7 +159,7 @@ public class OpenCvJavaCameraView extends OpenCvCameraBridgeViewBase implements
/* now we can start update thread */
Log.d(TAG, "Starting processing thread");
mStopThread = false;
mThread = new Thread(new CameraWorker(getWidth(), getHeight()));
mThread = new Thread(new CameraWorker());
mThread.start();
return true;
@@ -202,20 +202,11 @@ public class OpenCvJavaCameraView extends OpenCvCameraBridgeViewBase implements
private class CameraWorker implements Runnable {
private Mat mRgba = new Mat();
private int mWidth;
private int mHeight;
CameraWorker(int w, int h) {
mWidth = w;
mHeight = h;
}
public void run() {
do {
synchronized (OpenCvJavaCameraView.this) {
synchronized (JavaCameraView.this) {
try {
OpenCvJavaCameraView.this.wait();
JavaCameraView.this.wait();
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();

View File

@@ -1,14 +1,11 @@
package org.opencv.framework;
package org.opencv.android;
import org.opencv.android.Utils;
import org.opencv.core.Mat;
import org.opencv.core.Size;
import org.opencv.highgui.Highgui;
import org.opencv.highgui.VideoCapture;
import android.content.Context;
import android.graphics.Bitmap;
import android.graphics.Canvas;
import android.util.AttributeSet;
import android.util.Log;
@@ -17,31 +14,32 @@ import android.util.Log;
* Due to the big amount of work done, by the base class this child is only responsible
* for creating camera, destroying camera and delivering frames while camera is enabled
*/
public class OpenCvNativeCameraView extends OpenCvCameraBridgeViewBase {
public class NativeCameraView extends CameraBridgeViewBase {
public static final String TAG = "OpenCvNativeCameraView";
public static final String TAG = "NativeCameraView";
private boolean mStopThread;
private Thread mThread;
private VideoCapture mCamera;
public OpenCvNativeCameraView(Context context, AttributeSet attrs) {
public NativeCameraView(Context context, AttributeSet attrs) {
super(context, attrs);
}
@Override
protected void connectCamera(int width, int height) {
protected boolean connectCamera(int width, int height) {
/* 1. We need to instantiate camera
* 2. We need to start thread which will be getting frames
*/
/* First step - initialize camera connection */
initializeCamera(getWidth(), getHeight());
if (!initializeCamera(getWidth(), getHeight()))
return false;
/* now we can start update thread */
mThread = new Thread(new CameraWorker(getWidth(), getHeight()));
mThread = new Thread(new CameraWorker());
mThread.start();
return true;
}
@Override
@@ -61,7 +59,6 @@ public class OpenCvNativeCameraView extends OpenCvCameraBridgeViewBase {
/* Now release camera */
releaseCamera();
}
public static class OpenCvSizeAccessor implements ListItemAccessor {
@@ -78,32 +75,39 @@ public class OpenCvNativeCameraView extends OpenCvCameraBridgeViewBase {
}
private void initializeCamera(int width, int height) {
mCamera = new VideoCapture(Highgui.CV_CAP_ANDROID);
//TODO: improve error handling
private boolean initializeCamera(int width, int height) {
synchronized (this) {
mCamera = new VideoCapture(Highgui.CV_CAP_ANDROID);
java.util.List<Size> sizes = mCamera.getSupportedPreviewSizes();
if (mCamera == null)
return false;
/* Select the size that fits surface considering maximum size allowed */
FrameSize frameSize = calculateCameraFrameSize(sizes, new OpenCvSizeAccessor(), width, height);
//TODO: improve error handling
java.util.List<Size> sizes = mCamera.getSupportedPreviewSizes();
double frameWidth = frameSize.width;
double frameHeight = frameSize.height;
/* Select the size that fits surface considering maximum size allowed */
Size frameSize = calculateCameraFrameSize(sizes, new OpenCvSizeAccessor(), width, height);
mFrameWidth = (int)frameSize.width;
mFrameHeight = (int)frameSize.height;
mCamera.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, frameWidth);
mCamera.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, frameHeight);
AllocateCache();
mFrameWidth = (int)frameWidth;
mFrameHeight = (int)frameHeight;
mCamera.set(Highgui.CV_CAP_PROP_FRAME_WIDTH, frameSize.width);
mCamera.set(Highgui.CV_CAP_PROP_FRAME_HEIGHT, frameSize.height);
}
Log.i(TAG, "Selected camera frame size = (" + mFrameWidth + ", " + mFrameHeight + ")");
return true;
}
private void releaseCamera() {
if (mCamera != null) {
mCamera.release();
synchronized (this) {
if (mCamera != null) {
mCamera.release();
}
}
}
@@ -111,18 +115,8 @@ public class OpenCvNativeCameraView extends OpenCvCameraBridgeViewBase {
private Mat mRgba = new Mat();
private Mat mGray = new Mat();
private int mWidth;
private int mHeight;
CameraWorker(int w, int h) {
mWidth = w;
mHeight = h;
}
public void run() {
Mat modified;
do {
if (!mCamera.grab()) {
Log.e(TAG, "Camera frame grab failed");