对不起一个问题,请执行此代码时,我不知道哈哈,我不能将此图像位图转换为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引用丢失的类型位图”我不知道我是否得到之前的位图。
请帮助!,抱歉,并提前致谢。
答案 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中是你存储的图像。