[英]How to test OpenCV nodejs binding code in a module?
我正在实验opencv,我刚刚创建了一个“面部查找器”模块。
该代码运行良好。 但是,我的摩卡测试未执行全部代码。
这是我的存储库: https : //github.com/scaryguy/facefinder
当我运行此测试时:
describe('FaceFinder', function() {
it('should work', function() {
return FaceFinder('/Users/scaryguy/arge/opencv/facefinder/test/fixtures/childFaces.jpg', '/Users/scaryguy/arge/opencv/facefinder/')
});
});
我的代码部分执行。
看看我在最后运行代码行的注释位置。
// https://github.com/scaryguy/facefinder/blob/master/lib/find.js
Find.prototype.image = function(cb) {
var img = this;
cv.readImage(img.image_path, function(err, im) {
if (err) return cb(err, false);
// WHEN I console.log something here it's shown
im.detectObject(cv.FACE_CASCADE, {}, function(err, faces) {
// BUT here is never run WHILE executing the test.
if (err) return cb(err, false);
for (var i = 0; i < faces.length; i++) {
var x = faces[i]
im.ellipse(x.x + x.width / 2, x.y + x.height / 2, x.width / 2, x.height / 2);
}
im.save(img.output_name + ".jpg");
console.log("Number of found faces: " + faces.length + "\n");
cb(null, true);
});
})
}
奇怪的是,当我需要此模块并运行代码时,它可以完美运行。 但这在测试时不起作用。 而且没有错误。
有任何想法吗?
im.detectObject()
方法接受异步回调-即,它不会立即发生,而是在以后发生。
我对这个OpenCV库不熟悉,但是给定了方法的名称( detectObject ),我猜测这个方法仅在检测到cv.FACE_CASCADE Object
时才调用回调。
您的情况几乎可以肯定是这样的:
cv.FACE_CASCADE
对象,并且代码将运行。 cv.FACE_CASCADE
可以检测到,并且它不会运行(但也不会导致错误)。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.