【问题标题】:How to work a button function more time?如何更长时间地使用按钮功能?
【发布时间】:2015-01-26 16:22:38
【问题描述】:

我想用 OpenCV 截屏。例如一次触摸屏,但同时拍摄 5 张照片。这是我的代码,但我只能截取一次;

@SuppressLint("SimpleDateFormat")
@Override
public boolean onTouch(View v, MotionEvent event) {
    for(int i=0 ; i<5 ; i++){
        Random rnd=new Random();
        int number=rnd.nextInt(1000);
    Log.i(TAG,"onTouch event");
    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd_HH-mm-ss");
    String currentDateandTime = sdf.format(new Date());
    String fileName = Environment.getExternalStorageDirectory().getPath() +"/opencv"+
                           "/"+number+"sample_picture_" + currentDateandTime + ".jpg";
    mOpenCvCameraView.takePicture(fileName);
    Toast.makeText(this, fileName + " saved", Toast.LENGTH_SHORT).show();

    }

     return false;
}

【问题讨论】:

  • 你检查过fileNames是否相同?
  • 不一样他们每次都有不同的文件名。我添加了随机函数并在文件名部分生成随机数

标签: android opencv


【解决方案1】:

您可以在 onTouch 函数中启用一个标志,并在 onCameraFrame 函数中拍照。像这样:

@Override
public boolean onTouch(View v, MotionEvent event) {
    // TODO Auto-generated method stub
    takeFivePhotos = true;
    return true;
}

然后在onCameraFrame函数中:

@Override
public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
    // TODO Auto-generated method stub
    Mat mRgba = inputFrame.rgba();
    if(takeFivePhotos == true){
        // have a counter for the number of photos written and write your photo in files.
    }       
    return mRgba;
}

你可以找到完整的类实现here关于如何获取帧数据。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-04-16
    • 2019-04-08
    • 1970-01-01
    • 2021-11-07
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多