当前位置: 首页 > 知识库问答 >
问题:

无法将图像加载到Mat opencv中

穆季萌
2023-03-14

我想在android opencv上用Mat类加载图像,但我有一些错误。我在我的项目上添加库。我的代码:private CameraBridgeViewBase mopencvCameraView;
private BaseLoaderCallback mLoaderCallback=new BaseLoaderCallback(this){@override public void onManagerConnected(int status){switch(status){case LoaderCallbackInterface.success:{log.i(标记,“OpenCV加载成功”);mopencvCameraView.enableView();}break;默认:{super.onManagerConnected

@Override
public void onResume()
{
    super.onResume();
    OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_6, this, mLoaderCallback);
}



 @Override
 public void onCreate(Bundle savedInstanceState) {
     Log.i(TAG, "called onCreate");
     super.onCreate(savedInstanceState);
     getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
     setContentView(R.layout.activity_main);
     mOpenCvCameraView = (CameraBridgeViewBase) findViewById(R.id.HelloOpenCvView);
     mOpenCvCameraView.setVisibility(SurfaceView.VISIBLE);
     mOpenCvCameraView.setCvCameraViewListener(this);
     if (!OpenCVLoader.initAsync(OpenCVLoader.OPENCV_VERSION_2_4_9, this, mLoaderCallback))
     {
       Log.e(TAG, "Cannot connect to OpenCV Manager");
     }
     else
         Log.i(TAG, "Load it"); 

     Mat Image = Highgui.imread("/mnt/sdcard/1.jpg");

 }

 @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();
}

日志

谢谢

共有1个答案

弓宏茂
2023-03-14

不能在onCreate()中使用任何opencv代码

OpenCV本机代码的SO还没有加载,您必须等待,直到mLoaderCallback完成。

因此,将Mat上的任何操作移动到onCameraViewStarted()

 类似资料:
  • 问题内容: 我正在使用MEDIUMBLOB将图像存储在DB中。当我尝试通过servlet加载图像时,可以看到这些图像。但是,如果图像很大(1 MB或更大),我可以在浏览器中看到一半或3/4的图像。 当我下载相同的图像并将其放在公共Web内容中时,它可以完美运行。任何想法如何克服这个问题?我需要在servlet或MySQL中设置任何变量吗? (由JSF生成的)HTML代码如下: 图像servlet执

  • 这是我写的加载图像图标的代码。你能建议我需要做什么吗,因为我得到一个错误: java.lang.RuntimeException:无法编译的源代码-错误的sym类型:ImageDisplayTest.class.getClassLoader

  • 我的Build.Gradle文件 UPD.这个简单的应用程序可以加载图片从互联网,但它不能加载图片从我的服务器。我的服务器的一些图片加载得很好,但其他的不是。我已经迷路了

  • 我想在对话框窗口中显示图像(保存在项目文件夹中),但当我运行我的方法showDialogWithImage时,我会得到文件NotFoundException:imgs\pic1。jpg(系统无法找到指定的文件),尽管图像位于那里。 我也尝试过以这种方式加载图像: Image=new Image(getClass(). getResourceAsStream(path));,但遇到了同样的问题。 是

  • 问题内容: 我想在对话框窗口中显示图像(保存在项目文件夹中),但是当我运行方法showDialogWithImage时,我得到FileNotFoundExcpetion:imgs \ pic1.jpg(系统找不到指定的文件),尽管图像位于此处。 我也尝试过以这种方式加载图像: Image image = new Image(getClass()。getResourceAsStream(path))

  • 问题内容: 我测试了此代码以创建带有图像的对话框。 我将图像文件放入目录中。但是由于某些原因,图像无法显示。你能帮我纠正我的错误吗? 问题答案: 只需替换以下代码: 有了这个 Docu参考。 https://docs.oracle.com/javase/8/javafx/api/javafx/scene/image/Image.html 当您将a传递给该类时,可以用 四种不同的方式 处理( 从do