我已经编写了一些Android代码,我基本上只用内置摄像头拍照,保存,然后尝试加载保存的文件用它来做一些事情。
Camera camera = mPreview.getmCameraInstance();
Camera.PictureCallback pictureCallback =
GetPictureCallback(mPreview.getmCameraInstance());
camera.takePicture(null, null, pictureCallback);
Mat image = Highgui.imread(String.valueOf(file)); //Load Image here
但是,我的应用程序崩溃了,因为它在我加载图像的行中找不到文件。我不明白这一点,因为我认为我的代码将以顺序方式执行,然后我存储文件的takePicture(...)
已经完成。
你能帮我解决这个问题吗?
修改
当我之前放置Thread.sleep(100)
时,我可以打开图像,因为它已成功写入。
答案 0 :(得分:1)
您需要等到调用回调才能读取图像。
什么是GetPictureCallback
?如果它是你自己的代码,那么将图像读取移动到生成的回调中...如果没有,你可以做这样的事情:
Camera camera = mPreview.getmCameraInstance();
final Camera.PictureCallback otherPictureCallback =
GetPictureCallback(mPreview.getmCameraInstance());
camera.takePicture(null, null, new Camera.PictureCallback {
void onPictureTaken(byte[] data, Camera camera) {
otherPictureCallback.onPictureTaken(data, camera);
Mat image = Highgui.imread(String.valueOf(file)); //Load Image here
}
});