位图到Mat? android opencv

时间:2017-06-06 15:26:25

标签: android opencv bitmap

嗨我有我的Bitmap对象,我需要在Mat对象中转换。我看到有人使用了bitmaptoMat函数,但在我的Utils包中我有很多函数与点列表输入来获取Mat输出但是我有我的位图文件。我尝试了另一个解决方案:Imgcodecs.imread需要字符串输入,我猜它需要图像路径,但我尝试给uri.toString()但它不起作用。我该怎么办? 这是我的位图:

 Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);

2 个答案:

答案 0 :(得分:1)

导入

import org.opencv.android.Utils;

然后使用函数:

Bitmap bitmap = MediaStore.Images.Media.getBitmap(getContentResolver(), uri);
Mat imgMAT = new Mat (bitmap.getHeight(), bitmap.getWidth(), CvType.CV_8UC1);    
Utils.bitmapToMat(bitmap, imgMAT);

答案 1 :(得分:0)

您可以使用指向位图的指针来生成Mat文件。 我用QT做了这个,它看起来像这样:

QImage  img((uchar*)frame->data(), frame->width(), frame->height(), QImage::Format::Format_RGB888);

我在opencv中做过,但我不记得确切的构造函数: 尝试做这样的事情:

cv::Mat bitmapMat = cv::Mat(bitmap.height, bitmap.width, CV_8UC1, bitmap.data()); 

cv::Mat bitmapMat = cv::Mat(Size _size, int _type, void* _data, size_t _step=AUTO_STEP);