2016-12-06 2 views
2

J'essaie de détecter les visages dans les images. J'ai seulement besoin du nombre de visages dans l'image choisie par l'utilisateur. J'utilise le code suivant pour charger l'image du champ d'entrée dans un div aperçu:Facedetection.js IndexSIzeError dans Mozila et Safari

function readURL(input) { 
    if (input.files && input.files[0]) { 
     var image = new FileReader(); 

     image.onloadend = function (e) { 
      $('#image-wrap').html('<img src="" id="uploaded-photo">');     
      $('#uploaded-photo').attr('src', e.target.result); 
      $('#uploaded-photo').fadeIn(); 
      facedetect(); 
     } 

     image.readAsDataURL(input.files[0]); 
    } 
} 

$("#userfile").change(function() {  
    readURL(this); 
}); 

La fonction de détection est celui

function facedetect() { 
    $('#uploaded-photo').faceDetection({ 
     complete: function (faces) { 
      console.log(faces); 
     }, 
     error: function (code, message) { 
      console.log(message); 
     } 
    }); 
} 

Cela fonctionne très bien dans Chrome, mais à certaines occasions (mais pas tous) dans Mozilla et Safari, je reçois ceci dans la console:

IndexSizeError: Index or size is negative or greater than the allowed amount

la ligne générant cela semble être celui-ci:

var imageData = ctx.getImageData(0, 0, canvas.width, canvas.height); 

Toute aide est fortement appréciée.

+0

Pourriez-vous créer un lien vers la documentation ou github page pour la bibliothèque de détection de visage que vous utilisez. –

+0

d'abord, merci! https://github.com/jaysalvat/jquery.facedetection –

+0

Étant donné que l'erreur ne se produit que de façon sporadique, je dirais que c'est un problème dans la bibliothèque qui se produit uniquement lorsque l'image qui lui est fournie contient un motif. Il peut être utile de contacter l'auteur de la bibliothèque à propos du problème, en fournissant une image qui provoque l'erreur. –

Répondre

0

semble que mon image n'a pas été complètement chargée afin d'appeler facedetect en cas de charge résolu le problème

$('#uploaded-photo').on('load',function(){ facedetect(); }); 

tx à tous pour essayer de me aider :)