java OpenCV Android imwrite给我一个蓝色图像
我用CvCameraViewListener2
实现了一个摄像头,当我写imwrite时,图片保存变成蓝色
这是我的密码
public Mat onCameraFrame(final CvCameraViewFrame inputFrame) {
img_rgb = inputFrame.rgba();
return img_rgb;
}
public void captureImage(View v){
Mat mInter= new Mat(img_rgb.width(),img_rgb.height(),CvType.CV_32FC3);
File path = Environment.getExternalStoragePublicDirectory(Environment.DIRECTORY_PICTURES);
String filename = "temp.jpg";
File file = new File(path, filename);
Boolean bool = null;
filename = file.toString();
if(img_rgb.height() > img_rgb.width()){
Core.flip(img_rgb,mInter,1);
bool = Imgcodecs.imwrite(filename, mInter);
}
else{
bool = Imgcodecs.imwrite(filename,mInter);}
if (bool == true)
Log.i(TAG, "SUCCESS writing image to external storage");
else
Log.i(TAG, "Fail writing image to external storage");
String PathName = "";
Intent i = new Intent(getApplication(),Result.class);
i.putExtra(EXTRA_MESSAGE ,filename);
startActivity(i);
结果是:
我找不到问题,我试着把垫子换成其他颜色,但没有结果
# 1 楼答案
根据flip函数的文档:http://docs.opencv.org/java/2.4.2/org/opencv/core/Core.html#flip(org.opencv.core.Mat,org。opencv。果心Mat,int) mInter应具有与img_rgb相同的类型,img_rgb具有CvType类型。CV_32FC4。 因此,正确的初始化将是必要的
如果(仪表板高度)(>;img_rgb。width())为false,mInter包含空图像。因此,您应该保存img_rgb:
Imwrite docshttp://docs.opencv.org/3.0-beta/modules/imgcodecs/doc/reading_and_writing_images.html:
因此,您需要使用convert将其从rgba转换为bgr: