gpt4 book ai didi

java - 从 Android Activity 调用时 OpenCv 崩溃

转载 作者:太空狗 更新时间:2023-10-29 13:30:12 25 4
gpt4 key购买 nike

我有这段代码,我在其中使用 openCV 启动相机。代码如下。如果将此类“MainActivity”用作主类,则一切正常,但如果我从另一个 Activity 中使用它,则应用程序会崩溃。

这里是openCV android的代码

public class MainActivity extends Activity implements CvCameraViewListener2 {

private CameraBridgeViewBase mOpenCvCameraView;

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 onResume()
{
super.onResume();
OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_3, this, mLoaderCallback);
}

@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
setContentView(R.layout.helloopencvlayout);
mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.HelloOpenCvView);
mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
mOpenCvCameraView.setCvCameraViewListener((CvCameraViewListener2) this);

}

@Override
public void onPause()
{
super.onPause();
if (mOpenCvCameraView != null)
mOpenCvCameraView.disableView();
}

public void onDestroy() {
super.onDestroy();
if (mOpenCvCameraView != null)
mOpenCvCameraView.disableView();
}

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

public void onCameraViewStopped() {
}

public Mat onCameraFrame(CvCameraViewFrame inputFrame) {
return inputFrame.rgba();

}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu; this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.main, menu);
return true;
}

}

现在,如果我尝试从另一个使用 intent 的 Activity 调用它,其中我只有一个按钮并实现了 onclick 方法,当按下按钮时,调用此 Activity ,应用程序崩溃。

已经超过 4 个小时了,我正在为此苦苦挣扎。请帮助并提前致谢。

我相信实现了一个回调方法,所以我们不能将此 Activity 称为正常 Activity 调用,或者可能是其他一些概念。我在互联网上搜索它,但没有任何帮助。有些地方我也找到了异步调用的概念,但我没有明白。

请帮忙。谢谢。

最佳答案

如果您将在 oncreate 函数上使用 try catch block ,那么您将知道问题是类型转换异常,即应用程序无法将 org.opencv Activity 类类型转换为您的 Activity 。

因此,如果对 this 进行类型转换,如果我输入 MainActivity.this ,问题就解决了。

很简单,但我花了很多时间才弄明白。

关于java - 从 Android Activity 调用时 OpenCv 崩溃,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16509609/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com