minMaxLoc type de données
J'ai été perplexe par ce que pour quelques temps. pourriez-vous s'il vous plaît aidez-moi savoir, ce type de données ne le minMaxLoc() dans Opencv envisager, tout en trouvant le max, min vlaues d'un Tapis de variable? J'ai eu une certaine valeur de la fonction, mais je n'ai aucune idée de wat que la valeur représente en fait, et dans quel type de données?
Laplacian(src_gray,dst,ddepth,kernel_size,scale,delta,BORDER_DEFAULT);
minMaxLoc(dst,&min,&estimate,&minLoc,&maxLoc,noArray());
La valeur de "estimation" est quelque part autour de 1000, alors que si j'essaie d'accéder à la valeur de 'dst' Mat variable, à l'aide de
dst.at<datatype>(k,l)
Suis vague de valeurs, à partir de 124, 125 pour uchar, à 2,xxx,xxx,xxx si j'utilise long int. Quelle est la valeur donnée par le minMaxLoc fonction? S'il vous plaît aider moi.
OriginalL'auteur Lakshmi Narayanan | 2013-01-16
Vous devez vous connecter pour publier un commentaire.
min et estimation doit être de type double et j'imagine qu'ils sont corrects. Le problème est probablement avec vous accéder
Comme Abhishek Thakur mentionné, la sortie dépend de votre entrée. Si jamais vous êtes confus au sujet du type d'une matrice, vous pouvez regarder l'heure d'été.type() qui retourne un entier correspondant à la liste définie dans types_c.h commençant à la ligne 557. Les définitions pour un seul canal des types ou des "profondeurs" sont
Vous pouvez voir la formule utilisée pour calculer l'autre type de identificateurs sur la ligne 573
par exemple
a type
donc pour un 4 canaux uchar de l'image, le type() sera de retour le 24. À partir de ci-dessus vous pouvez voir que la profondeur d'un type est représenté par les 3 derniers bits de type integer. Si tout ce que vous voulez, c'est la profondeur (vous n'avez pas à vous préoccuper du nombre de canaux, qu'il a), vous pouvez obtenir directement auprès de l'heure d'été.profondeur()
Je sais que cela peut paraître idiot, mais où puis-je trouver la définition de ces dans la construction de variables? J'ai essayé de chercher, mais je suis un peu hors du temps. Si vous pouviez s'il vous plaît aidez-moi, je serai heureux. des variables telles que CV_16S etc. Wat types de données représentent-ils?
le U signifie non signé, le S signifie signé, le F signifie flotteur. le nombre est le nombre de bits sont impliqués. CV_16S signifie un 16 bits entier signé
Merci :).
Si j'utilise le double que le type de données en heure d'été.at<double>, il n'est pas de travail. me renvoie pas de valeur. Pourriez-vous s'il vous plaît dites-moi pourquoi, si vous en connaissez la raison?
OriginalL'auteur Hammer
Marteau réponse est très claire et il vous montre une jolie conseils: toujours vérifier les types de données et être conscient de
types_c.h
, vérifier chaque fois que vous voulez!De toute façon, minMaxLoc renvoie un double, mais c'est déjà faire le casting pour vous. Si vous donnez un char Mat objets en tant que tableau d'entrée, il a donné le 2 double variables comme double dans la gamme de 0 à 255 (le char de la gamme!).
Voir cet exemple:
maintenant, dans le code que vous avez posté, vous définissez le type de destination dans le
ddepth
. Vous pouvez spécifierddepth
comme opencv constante de types de données, comme:dans ce cas, le cv::Laplacien sera de retour un char Mat.
Donc, être toujours au courant de ce type de données que vous manipulez. Si vous êtes à travailler avec la couleur de l'image vous avais probabilly mieux utiliser
Mat::at<Scalar>()
.OriginalL'auteur nkint
Il dépend de la valeur que tu veux. Pour une image en niveaux de gris si vous entrez un Tapis avec uchar type de données, vous obtiendrez une valeur entre 0 et 255.
OriginalL'auteur Abhishek Thakur