2017-07-20 5 views
0

Je suis en train d'évaluer la méthode ForEachAs dans OpenCvsharp, mais je ne suis pas sûr de savoir comment utiliser la méthode.Comment utiliser la méthode Mat.ForEachAsDouble dans OpenCVsharp

J'ai chargé une image en échelle de gris dans un type de tapis. J'essaie ensuite d'utiliser la méthode ForEachAsInt16 sur cette image. La métode ForEachAsInt16 prend une opération MatForeachFunctionInt16 en entrée. J'ai donc besoin d'instancier un pointeur de fonction (délégué) de ce type. Comment je fais ça?

Répondre

1

Vous devez passer la fonction nommée unsafe avec la signature appropriée comme argument ForEachAsInt16() dans un contexte non sécurisé et compiler votre projet avec le mot clé /unsafe.

Exemple d'une fonction avec la signature appropriée:

unsafe static void Operation(short* pixel, int* position) 
{ 
    // Get or set pixel value. 
    short intencity = *pixel; 
    var row = position[0]; 
    var col = position[1]; 
} 

Vous pouvez le transmettre comme argument:

unsafe 
{ 
    mat.ForEachAsInt16(Operation); 
} 

Pour de plus amples contrôle de l'information: