Skip to content

Instantly share code, notes, and snippets.

@manikavi
Created June 28, 2017 10:47
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save manikavi/46cbdedba34d338c201f5cea6242fd2a to your computer and use it in GitHub Desktop.
Save manikavi/46cbdedba34d338c201f5cea6242fd2a to your computer and use it in GitHub Desktop.
Use OpenCv for taking image and showing in ImageView
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