我在安卓中使用OpenCV库。我有一个实现了PictureCallBack
接口的类。
重写方法onPictureTaken()
如下所示,
@Override
public void onPictureTaken(byte[] data, Camera camera) {
Log.i(TAG, "Saving a bitmap to file");
// The camera preview was automatically stopped. Start it again.
mCamera.startPreview();
mCamera.setPreviewCallback(this);
// Write the image in a file (in jpeg format)
try {
FileOutputStream fos = new FileOutputStream(mPictureFileName);
fos.write(data);
fos.close();
} catch (java.io.IOException e) {
Log.e("PictureDemo", "Exception in photoCallback", e);
}
}
我希望能够在图像处理中进一步使用图像数据,而不是保存和重新加载图像。
如何以最有效的方式从字节数组中获取Mat对象? 我已经尝试过以下方法:
不知道图片出了什么问题。
Mat m=new Mat(); m.put(0,0,data);
将其转换为位图,然后使用
bitmapToMat()
。 在这种情况下,红色变成了蓝色。
我也没有保存图像供未来使用的问题,但当我使用之前存储的图像时,会出现异常,因为文件还没有生成。
data
是一个byte[]
数组,其中包含适当格式的一系列像素。它可以从例如BufferedImage
中获取 -byte[] data = ((DataBufferByte) image.getRaster().getDataBuffer()).getData();
。 - lukk