Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/317.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java Android无法完成活动_Java_Android_Opencv - Fatal编程技术网

Java Android无法完成活动

Java Android无法完成活动,java,android,opencv,Java,Android,Opencv,我正在使用OpenCV android库编写一个应用程序。我已经创建了一个CameraActivity,我想调用它,并返回一个图像 public class CameraActivity extends Activity implements CvCameraViewListener2 { private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) { @Override public vo

我正在使用OpenCV android库编写一个应用程序。我已经创建了一个CameraActivity,我想调用它,并返回一个图像

public class CameraActivity extends Activity implements CvCameraViewListener2 {

private BaseLoaderCallback mLoaderCallback = new BaseLoaderCallback(this) {
    @Override
    public void onManagerConnected(int status) {
        switch (status) {
        case LoaderCallbackInterface.SUCCESS: {
            Log.i(TAG, "OpenCV loaded successfully");
            mOpenCvCameraView.enableView();
        }
            break;
        default: {
            super.onManagerConnected(status);
        }
            break;
        }
    }
};

@Override
public void onCreate(Bundle savedInstanceState) {
    ...

    Button snap = (Button) findViewById(R.id.snap);
    snap.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            processVideo();
        }
    });
    snap.setOnLongClickListener(new OnLongClickListener() {
        @Override
        public boolean onLongClick(View v) {
            processPicture();
            return true;
        }
    });
}

@Override
public void onPause() {
    ... 
}

@Override
public void onResume() {
    ...
}

public void onDestroy() {
    ...
}

public void onCameraViewStarted(int width, int height) {
    ...
}

@Override
public void onCameraViewStopped() {
    ...
}


public Mat onCameraFrame(CvCameraViewFrame cvf) {
    // Grab frame
    cvf.rgba().copyTo(frame);

    // Filter frame
    filterLaser();

    // Retrieve contour center point
    contourLaser();

    // Draw 
    draw();

    // Display the result.
    return cvf.rgba();
}

private void draw(){
    ...
}

private void filterLaser(){
    ...
}

void processVideo(){
    ...
}

void processPicture(){
    Intent result = new Intent();    

    if(frame != null)
    {
        // Convert the processed Mat to Bitmap
        Bitmap resultBitmap = Bitmap.createBitmap(frame.cols(),  frame.rows(),Bitmap.Config.ARGB_8888);;
        Utils.matToBitmap(frame, resultBitmap);

        setResult(Activity.RESULT_OK, result);
        result.putExtra("BITMAP", resultBitmap);
    } else {
        setResult(Activity.RESULT_CANCELED); // No frame found
    }

    Log.d("LastPoint", "FINISHED");
    finish();
}
};
在MainActivity中使用以下代码调用此活动

并在MainActivity中提取结果

@凌驾 ActivityResultant请求代码、int-resultCode、意图数据上的公共无效{ Log.dLastPoint,写入

完成后会被打印到logcat上,而书写不是。
为什么我不能退出CameraActivity?视图本身也没有关闭。

问题在于行:


通过在my CameraActivity中将图片保存到sdcard并通过结果意图传递Uri来解决此问题。

您应该在setResultActivity.result\u OK,result;之前使用result.PuterBitmap,resultBitmap;,而不是之后使用。谢谢!但这并不能解决我的问题。您是否尝试将日志放入ifframe!=null{}布洛克,确定它通过了吗?我通过了,再次验证。它通过了。检查
  Button reply = (Button) findViewById(R.id.buttonReply);
    reply.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            Intent i = new Intent(getApplicationContext(), CameraActivity.class);
            startActivityForResult(i, CAMERAREQUEST);
        }
    });
    switch(requestCode) {
        case (CAMERAREQUEST) : 
            if (resultCode == Activity.RESULT_OK) {
                Bitmap bmp = (Bitmap) data.getParcelableExtra("Bitmap");

                writeBitmap(bmp);
            }
            break;
    }
}
    result.putExtra("BITMAP", resultBitmap);