- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在尝试通过 OpenCV.js 使用面部识别,但是当我调用 CascadeClassifier
对象的 detectMultiScale()
方法时,我收到错误:
Uncaught 6446128 - Exception catching is disabled, this exception cannot be caught. Compile with -s DISABLE_EXCEPTION_CATCHING=0 or DISABLE_EXCEPTION_CATCHING=2 to catch.
问题是我直接从 opencv.org 利用托管版本的 opencv.js
- 它不是构建版本,因为我无法自己构建它,因此无法按照错误说明进行操作。
我在他们的 GitHub here 中关注了一个例子并调整代码以满足我的需要,如下所示:
<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 :
The xml files are "pre-built" before loading them with the load function. To achieve this it's used the function createFileFromUrl from utils.js. After that we can finally load our classifier from file.
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
});
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);
关于javascript - OpenCV.js - 检测多尺度 "This Exception cannot be caught",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54162946/
我的代码中有一个 ggplot2 绘图函数。当文件作为 R 代码来源时,该函数工作正常,但是当我将此函数包含在 R 包中时(当然,我在包的描述和命名空间文件中包含 ggplot2 和比例),我得到以下
VINS中的重力-尺度-速度初始化(2) 细化重力 \(\quad\) 上一篇文章中得到的 \(g\) 一般是存在误差的。因为在实际应用中,当地的重力向量的模一般是已知固定大小的(所以只有
我正在使用 perl 脚本解析一些天气数据,然后使用 gnuplot 在 3 行 2 列显示中绘制这些数据。除了最后一张图“累积降雨量”之外,我的所有图表似乎都可以正常工作。该图实际上绘制正确,但 y
我有两组数据,我想用条形图绘制。但问题是这两组数据的规模截然不同。如果我只使用 bar(A),它看起来像这样:分组但第二个数据集几乎不可见,因为比例。 但是,如果我使用 plotyy(x,y1,x,y
考虑以下用于绘制 matplotlib 图的 python 代码: import matplotlib.pylab as pp import numpy as np alpha = np.linspa
在调查 ConflictError ( see this previous question ) 时,我看到了很多 persistent.mapping.PersistentMapping 冲突。 具
我正在阅读一些代码,其中我注意到使用pyplot.xaxis('log')和pyplot.yaxis('log')时发生了很大的变化。所以基本的散点图如下所示: 添加后: plt.xscale('lo
当覆盖具有相同长度但不同尺度数据的 ggplot 密度图时,是否可以对图的 x 尺度进行归一化以使密度匹配?或者有没有办法标准化密度 y 尺度? library(ggplot2) data <- da
如何在 pyqtgraph 中生成具有两个 Y 尺度的图? 我还需要两个不同颜色的(对应于线条的颜色)。 在 matplotlib 中,可以使用 twinx 来完成,如this example . 如
我有一个看起来像这样的表 我将突出显示的部分作为矩阵,我想对其执行 imshow。我想让绘图的 x 尺度为对数,通过查看最上面一行的参数值可以理解这一点。 matplotlib 是怎么做到的? 最佳答
我正在使用 nvd3 绘制一些系列,并想在绘图中添加一些任意矩形。我如何访问 d3 图的底层 x 和 y 比例,以便我可以将我的矩形坐标转换为 svg 像素坐标,以便与现有数据具有相同的比例: fun
我是一名优秀的程序员,十分优秀!