OpenCV.js - 检测MultiScale“无法捕获此异常”

2024-02-11

我正在尝试通过 OpenCV.js 使用面部识别,但是当我调用detectMultiScale()的方法CascadeClassifier对象我收到错误:

未捕获 6446128 - 异常捕获已禁用,无法捕获此异常。使用 -s DISABLE_EXCEPTION_CATCHING=0 或 DISABLE_EXCEPTION_CATCHING=2 进行编译以捕获。

问题是我正在利用托管版本opencv.js直接来自opencv.org http://opencv.org- 它不是构建版本,因为我无法自己构建它,因此无法遵循错误的说明。

我按照他们的 GitHub 中的示例进行操作here https://github.com/opencv/opencv/blob/master/doc/js_tutorials/js_assets/js_face_detection.html并调整了代码以满足我的需要,如下所示:

<html>
  <head>
    <script src="https://docs.opencv.org/master/opencv.js"></script>
    <script src="https://docs.opencv.org/master/utils.js"></script>
  </head>

  <body>
    <img id="test" src="image/with/face.jpg" alt=""/>

    <canvas id="output"></canvas>

    <script>
        let face_cascade = new cv.CascadeClassifier();
      face_cascade.load("https://raw.githubusercontent.com/opencv/opencv/master/data/haarcascades_cuda/haarcascade_frontalface_default.xml");

        function face_detector() {
                let imgEl = document.getElementById("test");
                let img = cv.imread(imgEl);

                cv.imshow("output", img);
                let src = cv.imread("output");

                let gray = new cv.Mat();
                let msize = new cv.Size(0,0);
                cv.cvtColor(src, gray, cv.COLOR_RGBA2GRAY, 0);

                let faces = new cv.RectVector();
                face_cascade.detectMultiScale(gray, faces, 1.1, 3, 0, msize, msize); //Error occurs here
            }

        face_detector();
    </script>
  </body>
</html>

任何有 OpenCV.js 和面部识别经验的人都可以提供帮助吗?


按照此thread http://answers.opencv.org/question/198918/opencvjs-unable-to-load-haar-cascades/?answer=198936#post-id-198936:

xml 文件是在使用 load 函数加载之前“预先构建”的。为了实现这一点,它使用了 utils.js 中的 createFileFromUrl 函数。之后我们终于可以从文件加载分类器了。

let classifier = new cv.CascadeClassifier();  // initialize classifier

let utils = new Utils('errorMessage'); //use utils class

let faceCascadeFile = 'haarcascade_frontalface_default.xml'; // path to xml

// use createFileFromUrl to "pre-build" the xml
utils.createFileFromUrl(faceCascadeFile, faceCascadeFile, () => {
    classifier.load(faceCascadeFile); // in the callback, load the cascade from file 
});

人脸检测其他示例

TRY IT : https://docs.opencv.org/master/d2/d99/tutorial_js_face_detection.html

let src = cv.imread('canvasInput');
let gray = new cv.Mat();
cv.cvtColor(src, gray, cv.COLOR_RGBA2GRAY, 0);
let faces = new cv.RectVector();
let eyes = new cv.RectVector();
let faceCascade = new cv.CascadeClassifier();
// load pre-trained classifiers
faceCascade.load('haarcascade_frontalface_default.xml');
// detect faces
let msize = new cv.Size(0, 0);

// try to change scaleFactor  and minNeighbors values
faceCascade.detectMultiScale(gray, faces,1.05,0);
for (let i = 0; i < faces.size(); ++i) {
    let roiGray = gray.roi(faces.get(i));
    let roiSrc = src.roi(faces.get(i));
    let point1 = new cv.Point(faces.get(i).x, faces.get(i).y);
    let point2 = new cv.Point(faces.get(i).x + faces.get(i).width,
                              faces.get(i).y + faces.get(i).height);
    cv.rectangle(src, point1, point2, [255, 0, 0, 255]);
    roiGray.delete(); roiSrc.delete();
}
cv.imshow('canvasOutput', src);
src.delete(); gray.delete(); faceCascade.delete();
faces.delete(); eyes.delete();

尝试改变faceCascade.detectMultiScale参数如下所示:

faceCascade.detectMultiScale(gray, faces,1.05,0);
faceCascade.detectMultiScale(gray, faces,1.05,1);

faceCascade.detectMultiScale(gray, faces,2,0);
faceCascade.detectMultiScale(gray, faces,2,1);

faceCascade.detectMultiScale(gray, faces,3,0);
faceCascade.detectMultiScale(gray, faces,3,1);

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

OpenCV.js - 检测MultiScale“无法捕获此异常” 的相关文章

随机推荐

  • 计算 Javascript 中的小时差,但仅限特定时间

    不确定描述这一点的最佳方式 但我需要计算时间差异 向下舍入 但仅限于晚上 8 点到早上 6 点之间 或者在本例中为 20 00 06 00 例如 22 00 04 00 6 hours 02 40 10 20 4 hours 20 00 0
  • 如何将数组输入用于自定义 GitHub Actions

    我正在开发 GitHub Actionworkflow https github com MathieuSoysal Javadoc publisher yml blob 4ea2062374784e3de840530c99365039f5
  • OpenCV calibrateCamera() 断言失败

    我已经尝试使用 Opencv calibrateCamera 函数校准我的相机有一段时间了 我遵循了 opencv 示例程序中描述的相同过程 我尝试首先加载 10 个 9 x 6 棋盘图像 然后找到棋盘角 如果找到角点 则角点的像素位置将存
  • 如何在 JavaScript 中添加新元素?

    我创建了一个 JavaScript 脚本 可以将其粘贴到某人的页面上以创建 iFrame 我希望人们能够将脚本粘贴到他们希望 iFrame 出现的位置 但是 我不知道如何将 DOM 创建的 iFrame 附加到粘贴脚本的位置 它总是将其附加
  • 为 html 元素添加点击处理程序?

    我有一个使用 html 预先生成的页面 它看起来像一个可滚动的 div 列表 类似于 div div Item A div div div div Item B div div 我想在我的入口点方法中获取它们 并为每个添加一个单击处理程序
  • 在 Windows 上正确设置 DJANGO_SETTINGS_MODULE

    我有关于这个查询的帖子 但大多数都是针对 Linux 的 没有一个明确适用于 Windows 在我的应用程序中 我正在设置数据库 sqlite3 Django 中的默认值 编辑我的应用程序 mysite 的setting py文件后 DAT
  • 类在目标中被链接多次

    我有两个目标app and appTests 我也有课Wine和框架Realm和 RealmSwift 它们链接到这两个目标 当我使用类时也不例外Wine在目标中app 但是当我想运行测试时 appTests swift 22行 impor
  • 如何销毁由 resque 工作人员排队的工作?

    我在 Rails 3 项目上使用 Resque 来处理计划每 5 分钟运行一次的作业 我最近做了一些事情 使这些工作岗位的创造如滚雪球般增长 目前该堆栈已达到 1000 多个工作岗位 我修复了导致许多作业排队的问题 现在我遇到的问题是由错误
  • ReferenceError:ReactJS Build 中未定义 localStorage

    我在 React 应用程序中的经过身份验证的组件上大量使用 localStorage 以从本地存储获取用户详细信息并在登录时存储它们 当我构建我的应用程序时 它会抛出ReferenceError localStorage is not de
  • RxJava API 和 Java 9 Flow API 之间的区别

    在过去几个主要版本的 Java 的每次迭代中 似乎都有一致的新方法来管理并发任务 在 Java 9 中 我们有Flow API https docs oracle com javase 9 docs api index html java
  • R dplyr mutate_at 访问 colnames

    如何访问正在处理的列名dplyr mutate at 假设我们想要将数据框的列转换为因子 其级别存储在单独的列表中 df lt data frame C1 c A B C C2 c D E F df C1 C2 1 A D 2 B E 3
  • suffix(from:) 和 dropFirst(_:) 之间有什么区别吗?

    我突然想到 在 Swift 中处理子序列时 func suffix from Int 似乎与刚才相同dropFirst 显然 对于长度为 10 的数组 只需将输入值从 3 更改为 7 即可 只是重复一遍 所以 当然 对于一系列的说法长十 我
  • Python 中 switch/case 的语法等价物是什么? [复制]

    这个问题在这里已经有答案了 Programming languages like C C C Java JavaScript and Pascal Reference https en wikipedia org wiki Switch s
  • 删除 Github 上使用 提交的

    我在 github 上有一些提交 如下所示 有没有一种方法可以重新设置基准 以便我可以摆脱这个问题并简单地将提交标记为由我标记 首先我会检查你的 git 是否配置了正确的用户信息 跑步git config list以验证一切是否正确 您还可
  • 自动部署到 F5 负载平衡环境

    我们目前正在使用 TeamCity 进行 CI 构建 并且我们也在尝试设置自动化部署 我当前尝试部署的项目是位于 F5 负载均衡器下的 Windows 服务 将来 我们还希望自动化部署同样位于 F5 下的 IIS 网站 从 TeamCity
  • jquery mobile 外部面板不采用样式

    我正在尝试实现 jQuery mobile 1 4 rc1 中提供的新外部面板 我能够让面板按其应有的方式在所有页面上输入和关闭 但是面板不会继承默认主题 c 的样式 如果使用 data theme a 定义主题也不会继承样式 面板将加载无
  • 从剪贴板保存图像

    我想将 winrt 中剪贴板内的一张图像保存到文件中 但我没有找到办法 你能帮忙吗 var dataPackage Clipboard GetContent var t await dataPackage GetBitmapAsync va
  • 使用 jquery 的 ajax 调用中未设置 HTTP_X_REQUESTED_WITH

    我正在使用 Django 开发一个新网站 我遇到了 ajax 请求的问题 我一直在谷歌上搜索并阅读了很多帖子和文章 大多数都解释相同 问题 ajax 调用已执行 我在视图中收到了请求 但 request is ajax 返回 false 据
  • Vagrant、VirtualBox - 找不到适配器?

    输入 vagrant up 时获取以下日志转储 已尝试在 VirtualBox 上没有任何混乱 并且还手动添加端口转发规则 主机 IP 127 0 0 1 主机端口 2222 访客端口 22 Bringing machine polecat
  • OpenCV.js - 检测MultiScale“无法捕获此异常”

    我正在尝试通过 OpenCV js 使用面部识别 但是当我调用detectMultiScale 的方法CascadeClassifier对象我收到错误 未捕获 6446128 异常捕获已禁用 无法捕获此异常 使用 s DISABLE EXC