OpenCV android中MAT的大小仍为1920 * 2560 * CV_8UC4

时间:2013-12-19 05:48:24

标签: android opencv bitmap bit-manipulation bitmapfactory

我是Android开发到OpenCV的新手。我有一个图像,我正在对图像进行一些操作。我首先将我的图像转换为位图,然后将该位图转换为MAT,如下所示。

    Mat src = new Mat (400, 800, CvType.CV_8UC1, new Scalar(4));
    Bitmap myBitmap32 = BitmapFactory.decodeFile(bitmap_file);
    Utils.bitmapToMat(myBitmap32, src);

但是当我运行这个时,我的垫子就是

Mat [ 1920 * 2560 * CV_8UC4 ,isCont = true,isSubmat = false,nativeObj = 0x527a5950,dataAddr = 0x54262010]

所以,我的图像尺寸为1920x2560。

我希望这个尺寸是原来的400x800。

1 个答案:

答案 0 :(得分:2)

来自OpenCV Java文档:

  

输出Mat 始终创建的大小与输入位图和'CV_8UC4'类型相同,它将图像保持为RGBA格式。

因此,要调整图像大小,首先应将图像读取到Mat,然后使用resize()(来自Imgproc):

public static void resize(Mat src, Mat dst, Size dsize)
public static void resize(Mat src, Mat dst, Size dsize, double fx, double fy, int interpolation)

如果您想缩小图片,使用CV_INTER_AREA插值recommended