[英]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.