Un code qui fonctionne en vb.net avec GETDIBITS

Résolu
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012 - 22 août 2012 à 20:38
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012 - 19 sept. 2012 à 23:52
Bonjour a tous

Il y a un bon moment déja, je me suis mis dans l'idee de fabriquer un robot , avec des roues des moteurs et avec une camera... et honnetement je suis niveau bac -2 en informatique....( bac -2 )
J'en voie déja rigoler dans les coins !
Mais n'écoutant que mon courage, soutenu par mon fidele amis google, j'ai attaqué le prog.
Aprés un long-long travail fastidieux et intense, je suis enfin parvenu a capter une image avec ma webcam et à detourer les formes... bon c'est un début... j'en profite pour remercier Mr Sobel et sa matrice !
Pour cela j'utilse bien evidement getpixel.
Et comme vous vous en doutez c'est trés trés lent : 8 secondes pour une matrice de 640*480 .
Bref j'ai donc repris mes recherches et j'ai trouvé : GETDIBITS, souvent utilisé par DARKSIDIOUS dans bon nombre de codes.
J'esperais domestiquer GETDIBITS en essayant les codes de DARKSIDIOUS, et ainsi comprendre le fonctionnement de cette fonction, mais les codes bugs tous sur vb.net , et je ne parvient pas a les debugger malgré de grosses prises de tete et d'innonbrables recherches sur google .
Alors je m'en remet à vous, avez vous sous la main un code simple, utilisant cette satannée fonction: GETDIBITS ... et surtout, qui FONCTIONNE ô grââl parmis les grââls !!!

Gros bisous a tous !

40 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
28 août 2012 à 19:09
Ouais ..
Tu mélanges apparemment tout et n'hésites pas à distordre également tout (y compris les noms de ces fonctions).
Suis donc les conseils que t'a donnés Banana32. Ne te frotte pas aux fonctions de l'Api de Windows. Reste sagement avec VB.Net.
Pour constituer ton fameux tableau ====>>
Tapez le texte de l'url ici.
A lire, à comprendre, à bûcher.

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
3
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
22 août 2012 à 21:52
Bonjour,
Pour autant que je le sache, DarkSidious développait sous VB6 (et non sous VB.Net) avant de passer à Java (son dada, maintenant).
Si tu t'es contenté de copier/coller ses codes, cela ne risque pas de marcher. Les longs de VB6 sont à passer à des Integer en VB.Net.




________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Utilisateur anonyme
23 août 2012 à 02:22
Bonjour,

Si tu comprends l'anglais, Microsoft maintient un site consacré à l'informatique ludique. Je sais qu'ils ont déjà parlé des robots.

Channel9, incluant Coding4fun
0
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012
23 août 2012 à 07:45
Ha tiens mon copain ucfoutu ! t'm'arcono ?

Comme je le disais dans ma demande, je n'ai pas que copier/coller, j'ai passé des heures a essayer de debugger mais sans succés.
Vb.net declare 15 erreurs sur le dernier code, genre : ReDim n'est pas une fonction vb.net, ou " bidule" non déclaré , ou Hdc " je sais pas quoi"...
J'essais de comprendre une fonction "GETDIBITS" (soit-disant ultra rapide pour le traitement d'image) à travers un programme qui l'utilise, mais si le programme ne marche pas et que les erreurs sont +ou- liées a la fonction que je ne connais pas ca devient compliquer... bref beaucoup trop complexe à résoudre...
J'ai essayé au moins 8 codes, j'ai essayé de tous les debugger ( sauf celui avec 81 erreurs !!!), mais je n'ai pas reussi a en faire tourner un seul.

Je sais que Darksidious programmait en Vb6, mais pour l'utilisation de GETDIBITS je ne trouve que des codes en Vb6 de toute facon... quedalle en vb.net, de plus j'ai étendu ma recherche sur tous les forums et je ne trouve pas plus de code " entier " et exploitable et encore moins de Tuto. Donc là je suis sec.

C'est pourquoi je me permets en dernier recours de vous demander de l'aide.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 août 2012 à 08:24
t'm'arcono ?

Maintenant oui.
Je t'ai pour ma part indiqué certaines choses (de base), tant dans cette discussion que dans une discussion antérieure.
Ne développant pas sous VB.Net, je préfère te laisser là.
Bonne chance.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 août 2012 à 08:35
PS : je crois comprendre que tu as demandé à DarkSidious s'il pouvait t'aider à transposer son propre code VB6 pour VB.Net.
Je ne sais pas s'il verra ton message, mais n'attends pas trop une réponse positive de sa part, car je ne crois pas qu'il ait "retourné sa veste" en ce qui concerne VB.Net, dont je me rappelle fort bien qu'il n'a jamais voulu l'accepter (et il est aller jusqu'à bouder carrément MSoft, allant vers Java).


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012
23 août 2012 à 08:46
Ok ucfoutu, concernant Darksidious je ne me faisais pas trop d'illusions car ces dernieres contributions VB dates de 2004 ...

J'espere que quelqu'un pourra m'aider tout de meme, je regrette cependant que les sections vb.net et vb5/6 soient confondues sur ce forum, car pour trouver de l'aide spécifique au vb.net c'est hard.

Je trouve aussi curieux de trouver si peu d'infos sur vb.net en regle generale...

En attend, si tu as des contacts qui s'y connaissent en vb.net et GETDIBITS je suis preneur
0
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012
23 août 2012 à 12:33
En passant, dommage que tu ne maitrises pas vb.net car j'ai vu sur develloppez.com que tu maitrisais en revanche GETDIBITS
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 août 2012 à 12:55
Oui.
Mais ce n'est pas que je "ne maîtrise pas VB.Net" !
C'est plutôt (comme DarkSidious) que Microsoft devra chercher d'autres que moi pour "courir derrière une carotte", hein !
Quant à l'autre "référence" (un site) : réponse quasi identique.


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012
23 août 2012 à 13:22
Oui, bah c'est pas parceque j'aime pas Renault que je donnerais pas un coup de main a un mec en panne avec sa 4L au bord de la route.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 août 2012 à 14:49
Coup de main donné pour la base (voir message plus haut ainsi que discussion antérieure). Le reste, je te le laisse (également déjà dit).

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012
23 août 2012 à 15:12
C'est marrant de voir qu'il y a des gens qui passent leur temps à dire aux autres "débrouille-toi".

Alors que je cherche depuis des semaines, tu viens me dire : sujet abordé, y'a qu'a lire, si tu te donnais la peine une seconde de te mettre au niveau des débutants tu comprendrais qu'il y a des obstacle relativement dure à franchire quand on est pas clairement initié.
Par exemple, comme expliqué au début de ce post, il est impossible pour le débutant que je suis d'a la fois comprendre et debuguer un code dont on ne connait rien et dont on attend justement qu'il nous fasse progresser.

Pour imager, c'est comme lire des texto ( sms ) pour apprendre le francais !

Bref, j'use le soleil

Te fatigue pas à répondre, j'ai pas besoin des conseils d'un démago qui sous entend que je ne me donne pas la peine.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
23 août 2012 à 18:00
Ouais ...
Je vais me contenter de te rappeler ce que tu veux : un tableau de bits.
C'est précisément ce que te permet d'obtenir la fonction GetDiBits et il ne me semble pas que son utilisation en VB.Net par rapport à VB6 comporte des difficultés. Seule différence : des integer et non des longs.
Le tableau (bBytes) s'obtient de la même manière :
Pour mémoire :
GetDIBits iDC, iBitmap, 0, bi24BitInfo.bmiHeader.biHeight, bBytes(1), bi24BitInfo, DIB_RGB_COLORS

ou :
idc est l'identificateur du contexte de dispositif (hdc). Il te faut d'abord l'extraire, avant d'utiliser GetDiBits
iBitmap est le bitmap à traiter
0 pour dire que l'on part de la première ligne (dans le scan). Tu peux démarrer à la ligne de ton choix, selon ce que tu veux.
bi24BitInfo.bmiHeader.biHeight spécifie le nombre de lignes à "scanner" (limite du tableau recherché). C'est la valeur du membre bmiheader de la structure bi24BitInfo (bârie sur la structure Bitmapinfo). En te rappelant que ce membre est lui-même structuré (structure de BITMAPINFOHEADER) et comprend le membre biHeight.
Les deux derniers paramètres sont les suivants :
- le premier (ici bi24BitInfo) pointe vers la structure BITMAPINFO structure (dont les membres spécifient le format désiré) pour les données à récupérer.

- Le second (ici DIB_RGB_COLORS) spécifie le format du membre bmiColors de la structure BITMAPINFO structure (valeurs possibles :
--- DIB_PAL_COLORS : correspondant à une table de couleurs en matrice 16 bits pour la palette logique en cours
--- DIB_RGB_COLORS : correspondant à une table de couleurs définies en RGB
Voilà.
Tu en sais maintenant suffisamment sur cette fonction pour l'utiliser en connaissance de cause.
Ce sera tout en ce qui me concerne.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Utilisateur anonyme
23 août 2012 à 23:29
Bonsoir,

Dans une précédente discussion, un demandeur avait parlé de EMGU CV.
Ca pourrait être intéressant pour toi.
0
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012
24 août 2012 à 07:47
Merci ucfoutu, j'irais pas jusqu' a dire que tu fais franchement avancé, mais là au moins j'ai matière à travailler, tes infos vont me permetre de poursuivre ma recherche... Merci

Salut banana32, ton 1er lien a l'air super interessant, le 2eme ne fonctionne pas ( enfin pas chez moi).

Et quand j'aurais compris ca:
bi24BitInfo.bmiHeader.biHeight spécifie le nombre de lignes à "scanner" (limite du tableau recherché). C'est la valeur du membre bmiheader de la structure bi24BitInfo (bârie sur la structure Bitmapinfo). En te rappelant que ce membre est lui-même structuré (structure de BITMAPINFOHEADER) et comprend le membre biHeight.
Les deux derniers paramètres sont les suivants :
- le premier (ici bi24BitInfo) pointe vers la structure BITMAPINFO structure (dont les membres spécifient le format désiré) pour les données à récupérer.
... je serais le roi du monde !!!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 août 2012 à 08:03
Compris quoi ?
Ce qu'est uns structure ? Comment elle se déclare ?
Ce qu'est une structure de structures ?
Cela s'apprend indépendamment de telle ou telle autre appli VB !
Une structure :
- sous VB6 : est une variable personnalisée et est déclarée comme type
- sous VB.Net : est la même chose et se déclare comme Structure

- biheight ? (qui est le nombre de lignes/hauteur ?) ! bmiheader est l'entête. Elle contient la hauteur (biHeight). bmiHeader est un membre de la structure bi24BitInfo (structurée comme Bitmapinfo). Ce membre est lui même déclaré (au sein de cette structure) comme structuré selon la structure BITMAPINFOHEADER qui contient le membre biHeight.
On en revient à ce que je t'ai dit : apprendre ce que sont les structures et ce que sont les structures de structures (et cela : indépendamment de ton problème actuel . L'apprendre de manière générale VB). A vouloir brûler les étapes, tu passeras ton temùps à avoir des difficultés à comprendre beauicoup trop de choses.
_______________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012
24 août 2012 à 08:24
A vouloir aller trop vite je me heurte à des problemes c'est certain, mais à coder de la m....e je ne risque pas d'etre confronté à mon ignorance, donc de progresser ! Je prefere donc placer la barre plus haut au risque de séverement galerer !!!

Merci pour les infos, je vous tiens au jus ( maintenant c'est à moi de piocher )
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 août 2012 à 08:28
Progresse donc comme toi, tu l'entends.
Je ne pense quant à moi pas que l'on puisse comprendre la multiplication sans passer par l'étude de l'addition. Mais je suis un "lent" et peu doué. Tu as plus de chance ? Tant mieux




________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012
24 août 2012 à 08:49
Tu ne peux t'empécher d'etre sarcastique et arrogant dés que l'opinion des autres diverge de la tienne, tu sais qu'il y a d'autres manières de s'exprimer ?

Tu manques cruellement d'empathie
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
24 août 2012 à 09:30
Oui.
Bonne chance


________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
Rejoignez-nous