aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Software/Android_Studio/ColorCaptureTest/app/src/main/cpp/native-lib.cpp32
-rw-r--r--Software/Android_Studio/ColorCaptureTest/app/src/main/java/com/twine/colorcapturetest/CameraPreview.java16
-rw-r--r--Software/Android_Studio/ColorCaptureTest/app/src/main/java/com/twine/colorcapturetest/MainActivity.java3
-rw-r--r--Software/Android_Studio/ColorCaptureTest/app/src/main/res/layout/activity_main.xml14
4 files changed, 55 insertions, 10 deletions
diff --git a/Software/Android_Studio/ColorCaptureTest/app/src/main/cpp/native-lib.cpp b/Software/Android_Studio/ColorCaptureTest/app/src/main/cpp/native-lib.cpp
index 79458e499..b935925c6 100644
--- a/Software/Android_Studio/ColorCaptureTest/app/src/main/cpp/native-lib.cpp
+++ b/Software/Android_Studio/ColorCaptureTest/app/src/main/cpp/native-lib.cpp
@@ -4,6 +4,7 @@
#include <opencv2/imgproc/imgproc_c.h>
#include <ColorCaptureLib.h>
#include <BhBlocks.h>
+#include <android/log.h>
using namespace cv;
@@ -42,12 +43,16 @@ extern "C" JNIEXPORT jboolean JNICALL
Java_com_twine_colorcapturetest_CameraPreview_ImageProcessing(
JNIEnv *env, jobject instance, jint width,
jint height, jbyteArray NV21FrameData,
- jintArray outPixels) {
+ jintArray outPixels,jintArray wrapedOutPixels)
+{
jbyte *pNV21FrameData = env->GetByteArrayElements(NV21FrameData, 0);
jint *poutPixels = env->GetIntArrayElements(outPixels, 0);
+ jint *pwrapedPixels = env->GetIntArrayElements(wrapedOutPixels, 0);
////
+ jboolean has_result = false;
+
try {
ColorCaptureLib capture;
@@ -60,6 +65,18 @@ Java_com_twine_colorcapturetest_CameraPreview_ImageProcessing(
Mat result(width, height, CV_8UC4, (unsigned char *) poutPixels);
cvtColor(yuv, rgb, COLOR_YUV2RGB_NV21);
+ Mat gray;
+ Mat dst;
+ cvtColor(rgb, gray, CV_RGB2GRAY);
+ cv::Laplacian(gray, dst, CV_64F);
+
+ cv::Scalar mu, sigma;
+ cv::meanStdDev(dst, mu, sigma);
+
+ double focusMeasure = sigma.val[0] * sigma.val[0];
+
+ __android_log_print(ANDROID_LOG_ERROR, "FOCUS", "\n Focus measure is %f \n", focusMeasure);
+
rot90(rgb,ROTATE_180DEG);
//resize(src, dst, dst.size(), 0, 0, interpolation);
@@ -68,7 +85,7 @@ Java_com_twine_colorcapturetest_CameraPreview_ImageProcessing(
Mat rot_mat = getRotationMatrix2D(src_center, -90, 1.0);
warpAffine(rgb, rgb, rot_mat, rgb.size());*/
- vector<Point> vertices = capture.GetArcusVertices(rgb);
+ vector<Point> vertices = capture.GetQRVertices4(rgb);
for (size_t i = 0; i < vertices.size(); i++) {
circle(rgb, vertices[i], 2, CV_RGB(0, 0, 255), -1);
@@ -77,8 +94,14 @@ Java_com_twine_colorcapturetest_CameraPreview_ImageProcessing(
int w = 330;
int h = 300;
+ Mat wraped(h,w,CV_8UC4, (unsigned char *) pwrapedPixels);
+
if (vertices.size() == 4) {
- //capture.ApplyHomography(rgb, vertices, Size(w, h));
+
+ has_result = jboolean(true);
+
+ Mat m = capture.ApplyHomography(rgb, vertices, Size(w, h));
+ cvtColor(m, wraped, COLOR_RGB2BGRA);
//BhBlocks b(image, w / columns, h / rows);
//b.drawBlocks(image, Scalar(0, 0, 0), 1);
}
@@ -109,10 +132,11 @@ Java_com_twine_colorcapturetest_CameraPreview_ImageProcessing(
env->ReleaseByteArrayElements(NV21FrameData, pNV21FrameData, 0);
env->ReleaseIntArrayElements(outPixels, poutPixels, 0);
+ env->ReleaseIntArrayElements(wrapedOutPixels, pwrapedPixels, 0);
}
catch (Exception ex)
{
env->ThrowNew(env->FindClass("java/lang/NullPointerException"), ex.what());
}
- return static_cast<jboolean>(true);
+ return has_result;
} \ No newline at end of file
diff --git a/Software/Android_Studio/ColorCaptureTest/app/src/main/java/com/twine/colorcapturetest/CameraPreview.java b/Software/Android_Studio/ColorCaptureTest/app/src/main/java/com/twine/colorcapturetest/CameraPreview.java
index e8452c750..210bb46c1 100644
--- a/Software/Android_Studio/ColorCaptureTest/app/src/main/java/com/twine/colorcapturetest/CameraPreview.java
+++ b/Software/Android_Studio/ColorCaptureTest/app/src/main/java/com/twine/colorcapturetest/CameraPreview.java
@@ -28,8 +28,11 @@ public class CameraPreview implements SurfaceHolder.Callback, Camera.PreviewCall
{
private Camera mCamera = null;
private ImageView MyCameraPreview = null;
+ private ImageView wImageView = null;
private Bitmap bitmap = null;
+ private Bitmap wbitmap = null;
private int[] pixels = null;
+ private int[] wpixels = null;
private byte[] FrameData = null;
private int imageFormat;
private int PreviewSizeWidth;
@@ -40,9 +43,10 @@ public class CameraPreview implements SurfaceHolder.Callback, Camera.PreviewCall
Handler mHandler = new Handler(Looper.getMainLooper());
- public CameraPreview(int PreviewlayoutWidth, int PreviewlayoutHeight, ImageView CameraPreview, Activity context)
+ public CameraPreview(int PreviewlayoutWidth, int PreviewlayoutHeight, ImageView CameraPreview,ImageView wrapedImageView, Activity context)
{
this.context = context;
+ wImageView = wrapedImageView;
PreviewSizeWidth = PreviewlayoutWidth;
PreviewSizeHeight = PreviewlayoutHeight;
MyCameraPreview = CameraPreview;
@@ -140,8 +144,10 @@ public class CameraPreview implements SurfaceHolder.Callback, Camera.PreviewCall
PreviewSizeHeight = parameters.getPreviewSize().height;
bitmap = Bitmap.createBitmap(PreviewSizeHeight, PreviewSizeWidth, Bitmap.Config.ARGB_8888);
+ wbitmap = Bitmap.createBitmap(330, 300, Bitmap.Config.ARGB_8888);
pixels = new int[PreviewSizeWidth * PreviewSizeHeight];
+ wpixels = new int[330 * 300];
mCamera.startPreview();
}
@@ -226,7 +232,7 @@ public class CameraPreview implements SurfaceHolder.Callback, Camera.PreviewCall
// Native JNI
//
public native boolean ImageProcessing(int width, int height,
- byte[] NV21FrameData, int[] pixels);
+ byte[] NV21FrameData, int[] pixels,int[] wpixels);
static
@@ -240,10 +246,14 @@ public class CameraPreview implements SurfaceHolder.Callback, Camera.PreviewCall
public void run()
{
bProcessing = true;
- ImageProcessing(PreviewSizeWidth,PreviewSizeHeight , FrameData, pixels);
+ ImageProcessing(PreviewSizeWidth,PreviewSizeHeight , FrameData, pixels, wpixels);
bitmap.setPixels(pixels, 0, PreviewSizeHeight, 0, 0, PreviewSizeHeight, PreviewSizeWidth);
MyCameraPreview.setImageBitmap(bitmap);
+
+ wbitmap.setPixels(wpixels, 0, 330, 0, 0, 330, 300);
+ wImageView.setImageBitmap(wbitmap);
+
bProcessing = false;
}
};
diff --git a/Software/Android_Studio/ColorCaptureTest/app/src/main/java/com/twine/colorcapturetest/MainActivity.java b/Software/Android_Studio/ColorCaptureTest/app/src/main/java/com/twine/colorcapturetest/MainActivity.java
index 936abd15b..02ad107e1 100644
--- a/Software/Android_Studio/ColorCaptureTest/app/src/main/java/com/twine/colorcapturetest/MainActivity.java
+++ b/Software/Android_Studio/ColorCaptureTest/app/src/main/java/com/twine/colorcapturetest/MainActivity.java
@@ -42,10 +42,11 @@ public class MainActivity extends AppCompatActivity
tv.setText(stringFromJNI());
ImageView imageView = findViewById(R.id.imageView);
+ ImageView wimageView = findViewById(R.id.imageView2);
camView = new SurfaceView(this);
SurfaceHolder camHolder = camView.getHolder();
- camPreview = new CameraPreview(PreviewSizeWidth, PreviewSizeHeight, imageView,this);
+ camPreview = new CameraPreview(PreviewSizeWidth, PreviewSizeHeight, imageView,wimageView,this);
camHolder.addCallback(camPreview);
camHolder.setType(SurfaceHolder.SURFACE_TYPE_PUSH_BUFFERS);
diff --git a/Software/Android_Studio/ColorCaptureTest/app/src/main/res/layout/activity_main.xml b/Software/Android_Studio/ColorCaptureTest/app/src/main/res/layout/activity_main.xml
index 3713cafd0..f9add8675 100644
--- a/Software/Android_Studio/ColorCaptureTest/app/src/main/res/layout/activity_main.xml
+++ b/Software/Android_Studio/ColorCaptureTest/app/src/main/res/layout/activity_main.xml
@@ -33,10 +33,20 @@
tools:layout_editor_absoluteX="16dp"
tools:layout_editor_absoluteY="16dp" />
+ <ImageView
+ android:id="@+id/imageView2"
+ android:layout_width="216dp"
+ android:layout_height="216dp"
+ android:layout_alignParentStart="true"
+ android:layout_alignParentTop="true"
+ android:layout_marginStart="80dp"
+ android:layout_marginTop="110dp"
+ android:scaleType="fitXY" />
+
<FrameLayout
android:id="@+id/frameLayout"
- android:layout_width="129dp"
- android:layout_height="192dp"
+ android:layout_width="51dp"
+ android:layout_height="60dp"
android:layout_alignEnd="@+id/imageView"
android:layout_alignParentBottom="true"
android:layout_marginEnd="16dp"