Opencv图像裁剪和显示无法正常工作

时间:2015-12-22 10:30:24

标签: android opencv bitmap

Imageview显示来自uri的图像非常精细。但我试图从图像中裁剪一部分并使用opencv显示裁剪的部分。

所以我将我的位图对象转换为mat并试图裁剪它,但结果位图没有显示图像

bitmap = MediaStore.Images.Media.getBitmap(this.getContentResolver(), imgUri);
Utils.bitmapToMat(bitmap, unCropped);
Rect roi = new Rect(Utility.x, Utility.y, Utility.width, Utility.height);
Mat cropped = new Mat(unCropped, roi);
Utils.matToBitmap(cropped,bitmap);
imageView.setImageBitmap(bitmap);
imageView.setVisibility(View.VISIBLE);

我在这里做错了什么?

1 个答案:

答案 0 :(得分:0)

你可以像我在我的项目中那样使用手动方法: 它用于圆形图像结果:

public Bitmap getRoundedShape(Bitmap scaleBitmapImage) {
    int targetWidth = 50;
    int targetHeight = 50;
    Bitmap targetBitmap = Bitmap.createBitmap(targetWidth,
            targetHeight,Bitmap.Config.ARGB_8888);

    Canvas canvas = new Canvas(targetBitmap);
    Path path = new Path();
    path.addCircle(((float) targetWidth - 1) / 2,
            ((float) targetHeight - 1) / 2,
            (Math.min(((float) targetWidth),
                    ((float) targetHeight)) / 2),
            Path.Direction.CCW);

    canvas.clipPath(path);
    Bitmap sourceBitmap = scaleBitmapImage;
    canvas.drawBitmap(sourceBitmap,
            new Rect(0, 0, sourceBitmap.getWidth(),
                    sourceBitmap.getHeight()),
            new Rect(0, 0, targetWidth, targetHeight), null);
    return targetBitmap;
}

所以只做::

imageView.setImageBitmap(getRoundedShape(bitmap));

它会给你一个圆形图像。你可以根据自己的需要进行改变。希望这会有所帮助。 感谢帮助...