2013-04-10 80 views
0

我正在使用this plugin進行照片人臉檢測。它可以工作,但是當圖片中沒有可檢測的臉部時,錯誤功能不會被調用。 「完整」功能被調用。這個jquery插件總是返回一個數組嗎?

我想,當它不能檢測到人臉,它沒有返回數組,或返回未定義的對象,或者爲null,或什麼的,所以我嘗試:

//also tried null this way 
if(typeof coords[i].confidence === 'undefined') { 
alert("you have little aptitude for programming."); 
} 


if(coords instanceof Array) { 

     alert("good job!!"); 
} else { 
alert("not even close!!"); 
} 


if(!(coords.length)) { 
alert("you have a distorted perception of your own abilities."); 
} 


if (positionX > coords.length) { 

alert(coords[i].confidence); 
} 

當檢測顯示人臉適當的警報,但是當沒有檢測到面部時,不顯示警報。它只是稱爲「完整」功能。

這是腳本。讓我知道我是否應該提供更多的代碼。

<script> 
    $(function() { 
     $('#try').click(function() { 
      var $this = $(this); 

      var coords = $('img').faceDetection({ 


       complete:function(img, coords) { 
        $this.text('Done!'); 

       }, 
       error:function(img, code, message) { 
        $this.text('error!'); 
        alert('Error: '+message); 
       } 

      }); 



      for (var i = 0; i < coords.length; i++) { 

//Here is where I have been putting those conditional statements. 

//This part, which appends a bordered div (#face) to the div containing the face pic, works fine. 

       $('<div>', { 
        'class':'face', 
        'id':'face', 
        'css': { 
         'position': 'absolute', 
         'left':  coords[i].positionX +'px', 
         'top':  coords[i].positionY +'px', 
         'width': coords[i].width +'px', 
         'height': coords[i].height +'px' 
        } 

       }) 
       .appendTo('#content');        


      } 
     }); 


     return false; 
    }); 
    </script> 

<a href="#" id="try">TRY IT NOW!</a>    

<div id="content"> 
<img src="pic.jpg" id="myPicture"/> 
</div> 
+0

無論成功還是失敗,都可能調用'complete',類似於jQuery中'ajax'方法的完整選項? – 2013-04-10 03:33:55

+0

您是否嘗試過在控制檯中記錄'coords'並查看沒有識別到​​人臉時的價值? – JCOC611 2013-04-10 03:34:51

回答

0

complete確實被調用而不管成功。如果未能檢測到任何面孔,插件會返回空陣列,這就是爲什麼您沒有看到任何警報。您的for循環未執行。

+0

你是對的。我無法理解爲什麼我設定的條件中沒有一條是在失敗時調用這些警報,但事實證明我把它們放在了錯誤的地方。現在我有if(!(coords.length))alert(「fail」); }在循環之上,它工作。謝謝你的幫助! – user1877124 2013-04-10 14:29:59

相關問題