package
com.example.open_cv;
import
androidx.annotation.NonNull;
import
androidx.annotation.Nullable;
import
androidx.appcompat.app.AppCompatActivity;
import
android.Manifest;
import
android.content.Intent;
import
android.content.pm.PackageManager;
import
android.graphics.Bitmap;
import
android.os.Bundle;
import
android.provider.MediaStore;
import
android.util.Log;
import
android.view.View;
import
android.widget.Button;
import
android.widget.ImageView;
import
org.opencv.android.OpenCVLoader;
import
org.opencv.android.Utils;
import
org.opencv.core.Mat;
import
org.opencv.imgproc.Imgproc;
import
java.io.IOException;
public
class
MainActivity
extends
AppCompatActivity {
Button select,camera;
ImageView imageView;
Bitmap bitmap;
int
select_code=
100
,camera_code=
102
;
Mat mat;
@Override
protected
void
onCreate(Bundle savedInstanceState) {
super
.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getPermission();
if
(OpenCVLoader.initDebug())
Log.d(
"Loaded"
,
"success"
);
else
Log.d(
"Loaded"
,
"error"
);
camera=findViewById(R.id.Camera);
select=findViewById(R.id.select);
imageView=findViewById(R.id.imageView);
select.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View view) {
Intent intent=
new
Intent(Intent.ACTION_GET_CONTENT);
intent.setType(
"image/*"
);
startActivityForResult(intent,select_code);
}
});
camera.setOnClickListener(
new
View.OnClickListener() {
@Override
public
void
onClick(View view) {
Intent intent=
new
Intent(MediaStore.ACTION_IMAGE_CAPTURE);
startActivityForResult(intent,camera_code);
}
});
}
@Override
protected
void
onActivityResult(
int
requestCode,
int
resultCode,
@Nullable
Intent data) {
super
.onActivityResult(requestCode, resultCode, data);
if
(requestCode==select_code && data!=
null
)
{
try
{
bitmap= MediaStore.Images.Media.getBitmap(
this
.getContentResolver(),data.getData());
imageView.setImageBitmap(bitmap);
mat=
new
Mat();
Utils.bitmapToMat(bitmap,mat);
Imgproc.cvtColor(mat,mat,Imgproc.COLOR_RGB2GRAY);
Utils.matToBitmap(mat,bitmap);
imageView.setImageBitmap(bitmap);
}
catch
(IOException e) {
e.printStackTrace();
}
}
if
(requestCode==camera_code && data!=
null
)
{
bitmap=(Bitmap) data.getExtras().get(
"data"
);
imageView.setImageBitmap(bitmap);
mat=
new
Mat();
Utils.bitmapToMat(bitmap,mat);
Imgproc.cvtColor(mat,mat,Imgproc.COLOR_RGB2GRAY);
Utils.matToBitmap(mat,bitmap);
imageView.setImageBitmap(bitmap);
}
}
void
getPermission()
{
if
(checkSelfPermission(Manifest.permission.CAMERA)!= PackageManager.PERMISSION_GRANTED)
{
requestPermissions(
new
String[]{Manifest.permission.CAMERA},
101
);
}
}
@Override
public
void
onRequestPermissionsResult(
int
requestCode,
@NonNull
String[] permissions,
@NonNull
int
[] grantResults) {
super
.onRequestPermissionsResult(requestCode, permissions, grantResults);
if
(requestCode==
101
&& grantResults.length>
0
)
{
if
(grantResults[
0
]!=PackageManager.PERMISSION_GRANTED)
{
getPermission();
}
}
}
}