我是绝对的新手,目前正在Android Studio中制作应用。我希望它能够拍摄条形码的照片,将其保存,使用OpenCV对其进行一些图像处理,然后使用Zxing对其进行解码。
这是到目前为止应该做的所有活动的代码:
public class Scan extends AppCompatActivity {
private Uri file;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_scan);
openCamera();
}
public void openCamera(){
Intent intent_Camera = new Intent(MediaStore.ACTION_IMAGE_CAPTURE);
file = Uri.fromFile(getOutputMediaFile());
intent_Camera.putExtra(MediaStore.EXTRA_OUTPUT, file);
startActivityForResult(intent_Camera, 100);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (requestCode == 100) {
if (resultCode == RESULT_CANCELED) {
finish();
}
}
}
private static File getOutputMediaFile(){
File mediaStorageDir = new File(Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES), "MyApp");
if (!mediaStorageDir.exists()){
if (!mediaStorageDir.mkdirs()){
return null;
}
}
return new File(mediaStorageDir.getPath() + File.separator +
"TEMP" + ".jpg");
}
接下来,我想添加一种方法,该方法将从jpg文件中创建Mat,然后执行其他操作,到目前为止,它看起来像这样:
public static String decodePic(){
Imgcodecs imageCodecs = new Imgcodecs();
String file ="???";
Mat matPic = imageCodecs.imread(file);
尽管我不知道如何以“智能”方式获取jpg的路径。我可以用它在手机中的实际位置代替???插入它的实际路径,但是我很确定它对于不同的手机可能会有所不同。我曾考虑过对其进行一些更改,并采取与mediaStorageDir File相似的方式进行操作,但我不知道如何进行。有简单的方法吗?
从您的getOutputMediaFile()方法获取文件的对象并使用上面的命令。
file.getAbsolutePath()
将此返回值传递给您的未读方法