6
votes

Minmaxloc DataType

J'ai été soulevé par cela pendant un certain temps. Pourriez-vous s'il vous plaît aidez-vous à savoir que le type de type de données Le MINMAXLOC () dans OpenCV envisagent, tout en trouvant le MAX, Min Vlaies d'une variable de tapis? J'ai eu une certaine valeur de la fonction, mais je n'ai aucune idée de cette valeur qui représente réellement, et dans quel type de données? xxx

La valeur de "estimation" est quelque part autour de 1000, tandis que si J'essaie d'accéder à la valeur de la variable de tapis 'dst', à l'aide de xxx

d'obtenir des valeurs vagues, à partir de 124, 125 pour Uchar, à 2, xxx, xxx, xxx Si j'utilise longtemps int. Quelle est la valeur réellement donnée par la fonction MINMAXLOC? S'il vous plaît aidez-moi.


0 commentaires

3 Réponses :


2
votes

Cela dépend de la valeur que vous voulez. Pour une image à balance grise Si vous entrez un tapis avec un type de données UCHAR, vous obtiendrez une valeur comprise entre 0 et 255.


0 commentaires

13
votes

min et estimation doit être de type double et j'imagine qu'ils sont corrects. Le problème est probablement avec vous accédant à xxx pré>

comme Abhishek Thakur mentionné, la sortie dépend de votre entrée. Si vous êtes déjà confondu sur le type d'une matrice, vous pouvez regarder dst.type () qui retourne un entier correspondant à la liste définie dans types_c.h à partir de la ligne 557. Les définitions des types de canaux unique ou des "profondeurs" sont p > xxx pré>

Vous pouvez voir la formule utilisée pour calculer les autres identificateurs de type sur la ligne 573 P> xxx pré>

par exemple p>

0+((4-1) << 3) == 24


9 commentaires

@Hammer, je sais que cela pourrait sembler idiot, mais où puis-je trouver la définition de ceux des variables construites? J'ai essayé de chercher, mais je suis légèrement hors de temps. Si vous pouviez m'aider s'il vous plaît, je serai heureux. Des variables telles que cv_16s, etc. Les fichiers de données wat sont-ils représentant?


@Lakshminarayanan Le U signifie non signé, les moyens S signés, le F signifie flotter. Le nombre est de combien de bits sont impliqués. CV_16S signifie un entier signé de 16 bits


@Hammer si j'utilise le double comme le type de données dans dst.at , cela ne fonctionne pas. me renvoie aucune valeur. Pourriez-vous s'il vous plaît dites-moi pourquoi, si vous connaissez la raison?


@Lakshminarayanan est DST A CV_64F?


@hammer c'est cv_16s. Tout en accédant à sa valeur, il me renvoie Nan.


@hammer j'ai utilisé Long Double et les valeurs sont extrêmement petites. Cependant, le Minmaxloc me donne une valeur relativement très importante. Cela a toujours et me confond toujours. Aidez-moi, s'il vous plaît.


@Lakshminarayanan Lorsque vous dites dst.at Vous indiquez à DST d'interpréter son contenu sous forme de double (CV_64F), puis de retourner un élément spécifique à vous. Il n'y a pas de dire ce qu'il va revenir si vous le faites parce que, comme vous l'avez dit, il contient en fait CV_16S, un entier signé de 16 bits


@hammer, alors je sens que j'ai épuisé mes options, Cuz Int et Long int Dint font une grande partie de l'aide. Définir DFT alors que cv_64f résoudra le problème?


@Lakshminarayanan Int et Long Int n'ont pas de longueurs de bits bien définis. Il est probable que votre INT était de 32 bits et votre long Int était de 32 ou 64. Pour 16 bits, vous pourriez essayer de courte, mais votre meilleur pari lorsque vous vous souciez de la taille comme celui-ci consiste à utiliser un int avec une longueur explicite comme INT16_T



3
votes

Hammer La réponse est très claire et cela vous montre de beaux conseils: Vérifiez toujours les fichiers de données et soyez conscient de type_c.h code>, vérifiez-le à chaque fois que vous voulez!

Quoi qu'il en soit, Minmaxloc renvoie un double mais il fait déjà la distribution pour vous. Si vous donnez des objets de tapis Uchara comme tableau d'entrée, il définira les 2 doubles variables comme double dans la plage 0-255 (la plage d'Uchare!). P>

Voir cet exemple: P>

ddepth = CV_8UC1


0 commentaires