ActivityThread:找不到源

2024-03-24

我正在开发一个 Android 应用程序来比较两个静态图像。 但是当我尝试调试该项目时,我在 ActivityThread 中找不到源代码。 这是我的代码

查找器类

 package com.example.testmatching;

 import java.util.LinkedList;
 import java.util.List;

 import org.opencv.calib3d.Calib3d;
 import org.opencv.core.Core;
 import org.opencv.core.CvType;
 import org.opencv.core.Mat;
 import org.opencv.core.MatOfByte;
 import org.opencv.core.MatOfDMatch;
 import org.opencv.core.MatOfKeyPoint;
 import org.opencv.core.MatOfPoint2f;
 import org.opencv.core.Point;
 import org.opencv.core.Scalar;
 import org.opencv.features2d.DMatch;
 import org.opencv.features2d.DescriptorExtractor;
 import org.opencv.features2d.DescriptorMatcher;
 import org.opencv.features2d.FeatureDetector;
 import org.opencv.features2d.Features2d;
 import org.opencv.features2d.KeyPoint;
 import org.opencv.highgui.Highgui;


import android.app.Activity;
import android.graphics.Bitmap;
import android.graphics.BitmapFactory;
import android.os.Bundle;
import android.util.Log;
import android.widget.ImageView;
import android.widget.RelativeLayout.LayoutParams;
//import org.opencv.core.MatOfPoint;
//import android.view.Menu;

 public class Finder extends Activity {

 @Override

 protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_comparemain);
}

private static final int CV_LOAD_IMAGE_GRAYSCALE = 0;
private static final String TAG = "OCV::Activity";


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


public void run(String pathObject, String pathScene, String pathResult) {

    System.out.println("\nRunning FindObject");


    Mat img_object = new Mat();
    Utils.bitmapToMat(theImage, theImageMat ); // converts some Bitmap to some Mat*/

    Mat img_object = Highgui.imread("C:/work/OpenCV4Android/".concat(pathObject), CV_LOAD_IMAGE_GRAYSCALE); //0 = CV_LOAD_IMAGE_GRAYSCALE
    Mat img_scene = Highgui.imread("C:/work/OpenCV4Android/".concat(pathScene), CV_LOAD_IMAGE_GRAYSCALE);

     if( (img_object.empty()) || (img_scene.empty()) )
      { Log.d(TAG,"failing to read images");
         //System.out.println("images non lues");
      return;}

    FeatureDetector detector = FeatureDetector.create(4); //4 = SURF 

    MatOfKeyPoint keypoints_object = new MatOfKeyPoint();
    MatOfKeyPoint keypoints_scene  = new MatOfKeyPoint();

    detector.detect(img_object, keypoints_object);
    detector.detect(img_scene, keypoints_scene);

    DescriptorExtractor extractor = DescriptorExtractor.create(2); //2 = SURF;

    Mat descriptor_object = new Mat();
    Mat descriptor_scene = new Mat() ;

    extractor.compute(img_object, keypoints_object, descriptor_object);
    extractor.compute(img_scene, keypoints_scene, descriptor_scene);

    DescriptorMatcher matcher = DescriptorMatcher.create(1); // 1 = FLANNBASED
    MatOfDMatch matches = new MatOfDMatch();

    matcher.match(descriptor_object, descriptor_scene, matches);
    List<DMatch> matchesList = matches.toList();

    Double max_dist = 0.0;
    Double min_dist = 100.0;

    for(int i = 0; i < descriptor_object.rows(); i++){
        Double dist = (double) matchesList.get(i).distance;
        if(dist < min_dist) min_dist = dist;
        if(dist > max_dist) max_dist = dist;
    }

    System.out.println("-- Max dist : " + max_dist);
    System.out.println("-- Min dist : " + min_dist);    

    LinkedList<DMatch> good_matches = new LinkedList<DMatch>();
    MatOfDMatch gm = new MatOfDMatch();

    for(int i = 0; i < descriptor_object.rows(); i++){
        if(matchesList.get(i).distance < 3*min_dist){
            good_matches.addLast(matchesList.get(i));
        }
    }

    gm.fromList(good_matches);

    Mat img_matches = new Mat();
    Features2d.drawMatches(
            img_object,
            keypoints_object, 
            img_scene,
            keypoints_scene, 
            gm, 
            img_matches, 
            new Scalar(255,0,0), 
            new Scalar(0,0,255), 
            new MatOfByte(), 
            2);

    LinkedList<Point> objList = new LinkedList<Point>();
    LinkedList<Point> sceneList = new LinkedList<Point>();

    List<KeyPoint> keypoints_objectList = keypoints_object.toList();
    List<KeyPoint> keypoints_sceneList = keypoints_scene.toList();

    for(int i = 0; i<good_matches.size(); i++){
        objList.addLast(keypoints_objectList.get(good_matches.get(i).queryIdx).pt);
        sceneList.addLast(keypoints_sceneList.get(good_matches.get(i).trainIdx).pt);
    }

    MatOfPoint2f obj = new MatOfPoint2f();
    obj.fromList(objList);

    MatOfPoint2f scene = new MatOfPoint2f();

    scene.fromList(sceneList);
    //findHomography sert à trouver la transformation entre les good matches
    Mat hg = Calib3d.findHomography(obj, scene);

    Mat obj_corners = new Mat(4,1,CvType.CV_32FC2);
    Mat scene_corners = new Mat(4,1,CvType.CV_32FC2);

    obj_corners.put(0, 0, new double[] {0,0});
    obj_corners.put(1, 0, new double[] {img_object.cols(),0});
    obj_corners.put(2, 0, new double[] {img_object.cols(),img_object.rows()});
    obj_corners.put(3, 0, new double[] {0,img_object.rows()});
    //obj_corners:input
    Core.perspectiveTransform(obj_corners,scene_corners, hg);

    Core.line(img_matches, new Point(scene_corners.get(0,0)), new Point(scene_corners.get(1,0)), new Scalar(0, 255, 0),4);
    Core.line(img_matches, new Point(scene_corners.get(1,0)), new Point(scene_corners.get(2,0)), new Scalar(0, 255, 0),4);
    Core.line(img_matches, new Point(scene_corners.get(2,0)), new Point(scene_corners.get(3,0)), new Scalar(0, 255, 0),4);
    Core.line(img_matches, new Point(scene_corners.get(3,0)), new Point(scene_corners.get(0,0)), new Scalar(0, 255, 0),4);

    //Sauvegarde du résultat
    System.out.println(String.format("Writing %s", pathResult));
    Boolean bool=false;
    Highgui.imwrite(pathResult, img_matches);
    if (bool == true)
        Log.d(TAG, "SUCCESS writing image to external storage");
      else
        Log.d(TAG, "Fail writing image to external storage");


    ImageView imageView = new ImageView(getApplicationContext());
    //ImageView jpgView = (ImageView)findViewById(R.id.ImageView01);
    LayoutParams lp = new LayoutParams(LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
    /**/Bitmap image = BitmapFactory.decodeFile(pathResult);
    imageView.setImageBitmap(image);
    //RelativeLayout rl = (RelativeLayout) findViewById(R.id.);
    addContentView(imageView, lp);



    }


    }

主要活动

 package com.example.testmatching;
 import  com.example.testmatching.Finder;
 public class COMPAREMainActivity {
public static Finder fn=new Finder();
  public static void main(String[] args) {
   // System.loadLibrary("opencv_java246");
    fn.run("input1.png",  "input2.png","resultat.png");

  }
}   

我在那行放置了一个断点

Mat img_object = Highgui.imread("C:/work/OpenCV4Android/".concat(pathObject), CV_LOAD_IMAGE_GRAYSCALE);

我想测试从该文件夹读取图像的操作是否有效


您的模拟器不会引用您计算机中的文件。相反,将文件复制到 SD 卡(使用 DDMS)并从那里引用,例如:

File imgFile = new File(Environment.getExternalStorageDirectory()+"/object.png");// "/mnt/sdcard/object.png"

Prefer Environment.getExternalStorageDirectory()而不是硬编码"/mnt/sdcard"。因为这在某些设备中可能会有所不同。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ActivityThread:找不到源 的相关文章

  • 如何在opencv python中为图像添加边框

    如果我有如下图所示的图像 如何在图像周围添加边框 以便最终图像的整体高度和宽度增加 但原始图像的高度和宽度保持在中间 下面的代码添加了一个大小恒定的边框10像素到原始图像的所有四个边 对于颜色 我假设您想要使用背景的平均灰度值 这是我根据图
  • 在通知声音中暂停/恢复媒体播放器

    很容易检测到电话何时打入 通过phoneStateListener 但是其他通知声音 例如电子邮件或短信 又如何呢 在某些设备上 这些通知听起来很静音 但不会暂停任何当前正在运行的 mediaPlayer 实例 这对用户来说很烦人 理想情况
  • 我是否需要在我的 Firebase 项目中添加 SHA-1 指纹?

    在 Firebase 上有一个弹出窗口 显示我的项目可以添加指纹 SHA1 因为我只想使用一些 Firebase 服务 例如实时数据库 身份验证 我需要在我的项目中添加指纹吗 该图显示 仅在使用某些 Google Play 服务 如 OAu
  • 在android中的操作栏中标题左侧添加图标

    我想在操作栏中标题的左侧添加一个可点击的图标 按钮 怎么做 以下是我向操作栏添加搜索和设置图标的代码 它们出现在右侧 但我想在标题左侧添加一个新图标 怎么做 XML menu menu
  • 无法解析导航抽屉中片段中的 getSystemService

    我正在尝试实现一个导航抽屉 其中有一个片段中的地图 这是我的代码 这里是fragment map xml
  • SeekBar setProgress 丢弃次要进度

    我的小学和中学的进步是同时增长的 中学的进步比小学的进步快 每次我更新主要进度时 次要进度都会丢失 就像它为零或小于主要进度一样 这会产生令人讨厌的闪烁 我发现的唯一解决方法是在设置主数据库后将辅助数据库设置为自身 我添加了 1 因为 Se
  • Android OpenGLES 渲染到纹理

    我为 iPhone 编写图形应用程序 并且希望将我最新的应用程序 Layers 移植到 Android 平台 Layers 是一款绘画应用程序 允许用户在屏幕上绘画并使用不同的画笔 颜色等创建多层绘画 并导出到 PSD 它有桌面同步 涂抹工
  • 如何使用 Kotlin 在 ListAdapter 中使用 Filterable?

    我会用一个SearchView过滤我的RecyclerView 在 stackoverflow 和其他网站上我发现只是使用的示例Filterable与 Java 和RecyclerView Adapter当我使用时ListAdapter 所
  • 将文本视图添加到布局中?

    如果我的按钮不移动 我就无法在按钮上方放置文本视图 我该如何解决这个问题 被困在这个问题上 4 个小时了 这很伤心 因为我正在尝试在我的布局上添加一个文本视图 我的布局中心有 4 个按钮 我只想在四个按钮上方添加一个文本视图 如下所示 Te
  • WebView ssl 错误

    对不起我的英语不好 我需要加载 url https 我有一些问题 当我尝试加载页面时 webView 给我错误 primary error 3 certificate Issued to CN my site com Issued by C
  • Genymotion Google Nexus 6P 7.0.0 与 Open_Gapps 手臂 7.0.0

    With Genymotion 2 8 0 我已经安装了谷歌 Nexus 6P 7 0 0API 级别为 24 的设备 启动设备后 我刷新了 ARM 虚拟转换器并重新启动了设备 然后 我从下载 open gapps用于 Playstore
  • Google 的新地点库(实现“com.google.android.libraries.places:1.0.0”)无法解析

    我正在尝试迁移到新的 Places SDK 客户端 但我被告知要安装的依赖项文档 https developers google com places android sdk client migration给我一个 无法解决 错误 我确保
  • 如何从其他 Activity 类访问 Activity 的视图

    我的问题是当我更改文本时TextView在我的主类中 它返回 nullPointerException 这是我的代码 main xml
  • android tabwidget意图选项卡刷新每次点击

    我想使用具有意图的子选项卡创建一个选项卡 以便当用户单击选项卡意图时刷新 每次用户单击选项卡时 我想刷新并调用子意图选项卡的 oncreate 方法 public class Tabs3 extends TabActivity Overri
  • 处理网络视图中的链接

    我有我的WebView加载网络视图中的所有链接 但是当我选择电子邮件链接时 它会尝试将其加载到网络视图中 而不是在手机上启动电子邮件应用程序 我该如何解决这个问题 链接是mailto 电子邮件受保护 cdn cgi l email prot
  • 为什么Android和IOS11无法通过NFC通信

    目前正在使用 React Native 并尝试使用反应本机 NFC ios https www npmjs com package react native nfc ios and 反应本机 NFC https github com Nov
  • 如何在ListView中添加页脚?

    我正在开发一个应用程序 在我的应用程序中 我使用 Listview 使用 dom 解析显示数据 我想在列表视图中添加页脚 当我单击页脚时将更多数据添加到列表视图中 我附加了图像 我想要该设计和流程 请参考image1和imgae2 我在红色
  • AS更新到1.0后,项目中出现“method ID not in [0, 0xffff]: 65536”错误

    我将 Android Studio 更新到最新版本 并让它 修复项目 之类的 但现在我的项目无法编译 给了我 FAILED FAILURE Build failed with an exception What went wrong Exe
  • Android Studio同时为同一个项目构建两个应用程序

    我正在使用 Android Studio v0 5 9 制作一个应用程序 它有一个图书馆项目作为依赖 但是 每次我运行该项目时 都会将两个具有相同名称和图标的 APK 部署到我的设备上 第一个 apk app 包含我的主模块 而第二个是库项
  • Android 如何在按下或聚焦时使 TextView 文本变为粗体

    我的布局中有一个文本视图 我的要求是当我按下或聚焦它时 文本应该是粗体 否则应该使用普通字体 我该如何实施 使用下面的代码 TextView name TextView findViewById R id TextView01 name h

随机推荐

  • View 无法锚定到父 CoordinatorLayout

    我刚刚将 appcompat 库从 23 1 1 更新到 23 2 现在应用程序停止处理 java lang IllegalStateException 视图无法锚定到父 CoordinatorLayout java lang Illega
  • 在 Swift 中将字典转换为 JSON

    我已经创建了下一个词典 var postJSON ids 0 answersArray 0 ids 1 answersArray 1 ids 2 answersArray 2 as Dictionary 我得到 2 B 1 A 3 C 那么
  • Angular 1 - 获取当前URL参数

    我想从当前 URL 中提取数据并在控制器中使用它 例如我有这个网址 app dev backend surveys 2 我想要提取的位 应用程序 dev 后端 type id Angular 中有什么可以帮助我完成这项任务吗 从 URL 获
  • Highcharts 日期时间本地化

    有人可以告诉我如何本地化在 HighCharts js 文件中硬编码的日期相关字符串吗 例如 我希望图表显示本地化值 F v 而不是 x 轴中默认的 二月 日期标签 我尝试在实例化图表之前通过在语言对象上设置选项来实现本地化 Highcha
  • 数据透视表 SQL 中的水平总计

    我有这个查询工作 select cap idPlanoContasFin 3684 2234 2 from select cap idPlanoContasFin cap idempresa sum cap valorfatura as S
  • 为什么验证不是 Monad?

    一个示例用例 def div2 i Int Validation String Int if i 2 0 Validation success i 2 else Validation failure odd def div4 i Int f
  • Autowired 在自定义约束验证器中给出 Null 值

    我对 Spring 完全陌生 我已经针对所提出的问题查看了一些答案 以下是链接 Spring 3 1 自动装配在自定义约束验证器中不起作用 https stackoverflow com questions 12676299 spring
  • 如何在 Laravel 5.6 中创建自定义 404 页面?

    我还没有找到任何教程来解决如何在这个特定版本的 Laravel 5 6 中 正确 创建 404 页面 我发现一些过时的内容与 Laravel 5 6 的工作方式有点不同 任何输入都会有帮助 我通过阅读 Laravel 文档 自定义 HTTP
  • TypeORM 不支持实体装饰器上的数据库设置

    我试图将我的 TypeORM 项目分离到多个数据库上 因为它的规模不断增长 并且它的组件非常离散 但相互关联 所以我需要能够跨数据库建立关系 我正在尝试使用database设置在 Entity装饰器 如下所述 https typeorm i
  • 在 Elixir 中部署时更改后端/模块?

    如何实现一个可替换的后端 或基本上任何部分或模块 以便可以在 Elixir 中的配置 部署时进行替换 我的具体情况是一个简单的网络应用程序 在本例中使用 Phoenix 但我猜这个问题也适用于其他情况 我有一个非常简单的后端 使用Agent
  • 从 iPhone 上的我的应用程序调用官方 *设置* 应用程序

    在我的应用程序中的某一时刻 我想将用户重定向到官方Settings应用程序 如果可以的话我也想直接去Network内的部分Settings app 我想我需要的是Settings应用程序的 url 方案和构建我的请求的格式 但我怀疑调用这样
  • WebActivatorEx 与 OwinStartup

    例如 在 Web API 应用程序中 有什么区别 assembly OwinStartup typeof MyClass MyMethod and assembly WebActivatorEx PreApplicationStartMet
  • 当下载发生在新选项卡中时,如何在 Selenium (Java) 中无头下载文件?

    我有一个网页 当我单击按钮时 它会打开另一个选项卡 然后在其中几秒钟后下载 csv 文件 我试图无头自动化 但我无法做到这一点 我正在使用下面的代码 但我认为以下解决方案适用于在同一窗口中进行下载 我如何调整它以适合我的情况 代码工作正常
  • 如何使用 bluez API 扫描低功耗蓝牙设备

    我是使用 BlueZ 进行低功耗蓝牙编程的新手 我想开发一个本机代码 c 来使用 BlueZ API 在 Android 4 0 3 下扫描附近的低功耗蓝牙设备 有人知道我应该使用哪些 BlueZ 方法吗 如果您想编写本机 C 代码来扫描
  • Drupal 7:如何更改图像字段小部件“alt”或标题“标签

    我正在尝试更改节点添加表单上的图像小部件中的 alt 和 标题 标签 我已经尝试过这两个钩子 hook field widget form alter hook form alter 我无法找到需要去哪里才能成功更改标签 有人可以指导我找到
  • Spring 的 LoadTimeWeaver 代理未启动

    我正在尝试使用 Spring 和 AspectJ 实现加载时编织 据我所知 我已正确配置所有内容 但当我尝试运行集成测试时 我不断收到错误 org springframework beans factory BeanCreationExce
  • React Navigation v5:如何与 Branch.io 一起使用

    我们有一个利用 Branch io 通用链接的应用程序 按照以下文档 https help branch io developers hub docs react native read deep link https help branc
  • 如何使用反射获取对象的属性?

    我知道我能做到 foreach PropertyInfo property in myobject GetType GetProperties if property DeclaringType ToString myobject GetT
  • Cuda 计算模式和“CUBLAS_STATUS_ALLOC_FAILED”

    我的集群中有一台主机 有 8 个Nvidia K80我想将其设置为每个设备最多可以运行 1 个进程 以前 如果我在主机上运行多个作业并且每个作业都使用大量内存 它们都会尝试访问同一设备并失败 我将所有设备设置为计算模式 3 E Proces
  • ActivityThread:找不到源

    我正在开发一个 Android 应用程序来比较两个静态图像 但是当我尝试调试该项目时 我在 ActivityThread 中找不到源代码 这是我的代码 查找器类 package com example testmatching import