簡體   English   中英

如何在模塊中測試OpenCV nodejs綁定代碼?

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM