[英]convert Mat to Bitmap Opencv for Android
我正在尝试使用以下代码将MAt转换为位图:
Bitmap bmp = Bitmap.createBitmap(width, height, Bitmap.Config.ARGB_8888);
Mat tmp = new Mat (width,height,CvType.CV_8UC1,new Scalar(4));
try {
//Imgproc.cvtColor(seedsImage, tmp, Imgproc.COLOR_RGB2BGRA);
Imgproc.cvtColor(seedsImage, tmp, Imgproc.COLOR_GRAY2RGBA, 4);
Utils.matToBitmap(tmp, bmp);}
catch (CvException e){Log.d("Exception",e.getMessage());}
我的seedsImage是一个Mat对象。 而Exception和got是10-09 22:15:09.418: D/Exception(2461): ..\\..\\modules\\java\\generator\\src\\cpp\\utils.cpp:105: error: (-215) src.dims == 2 && info.height == (uint32_t)src.rows && info.width == (uint32_t)src.cols in function void Java_org_opencv_android_Utils_nMatToBitmap2(JNIEnv*, _jclass*, jlong, _jobject*, jboolean)
我试过了搜索但没有解决方案适合我。 任何人都可以帮忙吗?
1)OpenCV Mat构造函数需要<rows, cols>
对而不是<width, height>
作为其参数。 所以你必须改变你的第二行
Mat tmp = new Mat (height, width, CvType.CV_8U, new Scalar(4));
2) Imgproc.cvtColor
可以改变tmp
对象的尺寸。 因此,在颜色转换后创建位图是安全的:
Bitmap bmp = null;
Mat tmp = new Mat (height, width, CvType.CV_8U, new Scalar(4));
try {
//Imgproc.cvtColor(seedsImage, tmp, Imgproc.COLOR_RGB2BGRA);
Imgproc.cvtColor(seedsImage, tmp, Imgproc.COLOR_GRAY2RGBA, 4);
bmp = Bitmap.createBitmap(tmp.cols(), tmp.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(tmp, bmp);
}
catch (CvException e){Log.d("Exception",e.getMessage());}
尝试使用此代码进行mat到位图转换
**Mat mRgba;
public void onCameraViewStarted(int width, int height) {
mRgba = new Mat(height, width, CvType.CV_8UC4);
}
public Mat onCameraFrame(Mat inputFrame) {
inputFrame.copyTo(mRgba);
return mRgba;
}
private void captureBitmap(){
bitmap = Bitmap.createBitmap(mOpenCvCameraView.getWidth()/4,mOpenCvCameraView.getHeight()/4, Bitmap.Config.ARGB_8888);
try {
bitmap = Bitmap.createBitmap(mRgba.cols(), mRgba.rows(), Bitmap.Config.ARGB_8888);
Utils.matToBitmap(mRgba, bitmap);
mBitmap.setImageBitmap(bitmap);
mBitmap.invalidate();
}catch(Exception ex){
System.out.println(ex.getMessage());
}
}**
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.