我的layout只有一个按钮和一个imageview,具体代码是写在点击的监控事件中,我直接写在oncreate()中,以下是代码:
setContentView(R.layout.activity_main);
img = (ImageView)findViewById(R.id.imageView);
img.setScaleType(ImageView.ScaleType.FIT_CENTER);//图片居中显示
Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.img222);//读取图片资源
bitmap= ThumbnailUtils.extractThumbnail(bitmap,256,256);
img.setImageBitmap(bitmap);//显示到ImageView控件中
btn = (Button)findViewById(R.id.button);
btn.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Mat src = new Mat();
BitmapDrawable bitmapDrawable = (BitmapDrawable) img.getDrawable();
Bitmap bitmap1 = bitmapDrawable.getBitmap();//加载ImageView控件中Bitmap图片
Utils.bitmapToMat(bitmap1, src);//Bitmap -> Mat
Mat dst = new Mat();
Imgproc.cvtColor(src, dst, Imgproc.COLOR_BGR2GRAY);// 灰度化
// Imgproc.Canny(src, dst, 50, 120, 3, true); // Canny边缘检测
Imgproc.threshold(dst,dst,100,255,Imgproc.THRESH_BINARY);
Bitmap bitmap2 = Bitmap.createBitmap(src.cols(), src.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(dst, bitmap2); // Mat -> Bitmap
img.setImageBitmap(bitmap2); // 使用ImageView控件中显示新的Bitmap
src.release();
dst.release();
}
});```