将位图转换为Mat,FAIL

时间:2015-03-06 11:49:47

标签: bitmap converter mat

对不起一个问题,请执行此代码时,我不知道哈哈,我不能将此图像位图转换为mat以创建具有autocrop文档的应用程序。这是我的代码:

    else if(requestCode == PIC_CROP){

        Bundle extras = data.getExtras();
        //get the cropped bitmap
        Bitmap thePic = extras.getParcelable("data");

        //First convert Bitmap to Mat.

        Bitmap myBitmap32 = thePic.copy(Bitmap.Config.ARGB_8888, true);
        Mat ImageMat = new Mat ( thePic.getHeight(), thePic.getWidth(), CvType.CV_8U, new Scalar(4));

        Utils.bitmapToMat(myBitmap32, ImageMat);
        Imgproc.cvtColor(ImageMat, ImageMat, Imgproc.COLOR_RGB2GRAY,4);

        findLargestRectangle(ImageMat);

当我在位图中手动接收图像裁剪时,我希望将此变量转换为Mat,因为在转到另一个函数之后,为了在查找自动裁剪之后找到最大的矩形。但是当我编写此代码时,此行中出现错误:

Utils.bitmapToMat(myBitmap32,ImageMat);

在“bitmapToMat”中的

并说“从类型utils引用丢失的类型位图”我不知道我是否得到之前的位图。

请帮助!,抱歉,并提前致谢。

1 个答案:

答案 0 :(得分:0)

检查此代码,它对我有用:

            Mat img = new Mat();
            String photoPath = Environment.getExternalStorageDirectory().toString() 
            + "/myimg.png";

            BitmapFactory.Options options = new BitmapFactory.Options();
            options.inPreferredConfig = Bitmap.Config.ARGB_8888;
            Bitmap bitmap = BitmapFactory.decodeFile(photoPath, options);
            Utils.bitmapToMat(bitmap, img);

            if (img.channels() == 3) {
                Imgproc.cvtColor(img, img, Imgproc.COLOR_RGB2GRAY);
            } else if (img.channels() == 4) {
                Imgproc.cvtColor(img, img, Imgproc.COLOR_RGBA2GRAY);
            }

photoPath是您图片的路径,我在那里使用了Android存储。 在img中是你存储的图像。