Created
June 28, 2017 10:47
-
-
Save manikavi/46cbdedba34d338c201f5cea6242fd2a to your computer and use it in GitHub Desktop.
Use OpenCv for taking image and showing in ImageView
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
package com.apps.facedetect; | |
import android.Manifest; | |
import android.content.pm.PackageManager; | |
import android.graphics.Bitmap; | |
import android.os.Build; | |
import android.support.v7.app.AppCompatActivity; | |
import android.os.Bundle; | |
import android.util.Log; | |
import android.view.View; | |
import android.widget.Button; | |
import android.widget.ImageView; | |
import org.opencv.android.BaseLoaderCallback; | |
import org.opencv.android.CameraBridgeViewBase; | |
import org.opencv.android.LoaderCallbackInterface; | |
import org.opencv.android.OpenCVLoader; | |
import org.opencv.android.Utils; | |
import org.opencv.core.CvType; | |
import org.opencv.core.Mat; | |
public class SegmentActivity extends AppCompatActivity implements CameraBridgeViewBase.CvCameraViewListener2{ | |
private static final int CAMERA_PERMISSION_REQUEST_CODE =1 ; | |
private static final String TAG = MainActivity.class.getSimpleName(); | |
CameraBridgeViewBase cameraBridgeViewBase; | |
ImageView faceDetectionImageView; | |
Mat mat; | |
Button analyseBtn; | |
Bitmap mBitmap; | |
@Override | |
protected void onCreate(Bundle savedInstanceState) { | |
super.onCreate(savedInstanceState); | |
setContentView(R.layout.activity_segment); | |
checkCameraPermission(); | |
analyseBtn = (Button) findViewById(R.id.analyseBtn); | |
analyseBtn.setOnClickListener(new View.OnClickListener() { | |
@Override | |
public void onClick(View v) { | |
// convert to bitmap: | |
mBitmap = Bitmap.createBitmap(mat.cols(), mat.rows(),Bitmap.Config.ARGB_8888); | |
Utils.matToBitmap(mat, mBitmap); | |
// find the imageview and draw it! | |
faceDetectionImageView.setImageBitmap(mBitmap); | |
faceDetectionImageView.setVisibility(View.VISIBLE); | |
cameraBridgeViewBase.setVisibility(View.GONE); | |
} | |
}); | |
} | |
private void checkCameraPermission() { | |
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { | |
if (checkSelfPermission(Manifest.permission.CAMERA) != PackageManager.PERMISSION_GRANTED) { | |
requestPermissions(new String[] {Manifest.permission.CAMERA}, CAMERA_PERMISSION_REQUEST_CODE); | |
}else { | |
Log.i(TAG,"Ready to Proceed"); | |
proceedFurther(); | |
} | |
} | |
} | |
private void proceedFurther() { | |
faceDetectionImageView = (ImageView) findViewById(R.id.faceDetectionImageView); | |
cameraBridgeViewBase = (CameraBridgeViewBase) findViewById(R.id.faceDetectionJavaCameraView); | |
cameraBridgeViewBase.setVisibility(CameraBridgeViewBase.VISIBLE);; | |
cameraBridgeViewBase.setCvCameraViewListener(this); | |
if (!OpenCVLoader.initDebug()){ | |
Log.d(TAG, "Internal OpenCv library found,Using OpenCV Manager for initialization "); | |
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_3_2_0,this,baseLoaderCallback); | |
}else { | |
Log.d(TAG, "OpenCV library found inside package. Using it!"); | |
baseLoaderCallback.onManagerConnected(LoaderCallbackInterface.SUCCESS); | |
} | |
} | |
BaseLoaderCallback baseLoaderCallback = new BaseLoaderCallback(this) { | |
@Override | |
public void onManagerConnected(int status) { | |
switch (status){ | |
case LoaderCallbackInterface.SUCCESS:{ | |
Log.i(TAG, "OpenCV loaded successfully"); | |
cameraBridgeViewBase.enableView(); | |
} | |
break; | |
default: | |
super.onManagerConnected(status); | |
break; | |
} | |
} | |
}; | |
@Override | |
public void onCameraViewStarted(int width, int height) { | |
mat = new Mat(height,width, CvType.CV_8UC4); | |
} | |
@Override | |
public void onCameraViewStopped() { | |
mat.release(); | |
} | |
@Override | |
public Mat onCameraFrame(CameraBridgeViewBase.CvCameraViewFrame inputFrame) { | |
mat = inputFrame.rgba(); | |
return mat; | |
} | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment