Comment mettre dans un tableau les pixels d'une picturebox ?

cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012 - 11 mars 2012 à 18:19
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012 - 20 mars 2012 à 10:04
Bonjour a tous
Je suis débutant en Vb.net, et je rencontre un probleme avec le traitement d'une image.
J'ai récupéré sur ce site une source pour capturer une image avec ma webcam. J'arrive a enregistrer cette image dans tous les formats( bmp, jpg...), mais pas sous la forme RGB. C'est a dire que quand j'ouvre le fichier de l'image y'a pas de chiffres exploitables.
Comment fait on pour obtenir la valeur RGB de chaque pixel afin de coller ca dans un tableau de pixel ?
PS: Ca fait une semaine que je cherche et je trouve... rien !
Merci pour vos conseils.

33 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
11 mars 2012 à 18:49
Bonjour,
Coller des RGB (les 3 composantes, donc, dans un tableau de pixels ? (et pourquoi ?)
ou
Coller dans un tableau de pixels la valeur (donc un long résultant de RGB) correspondant à chaque pixel ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012
11 mars 2012 à 20:07
Je souhaite analyser les images une a une, voir meme comparer 2 images successives pour voir les differences.
Je suis en train de fabriquer un robot, piloté par un notebook posé dessus et programmé en Vb.net, donc j'essai de commencer le traitement d'images de la webcam du notebook.
Ok mon approche n'est peut etre pas la bonne, mais je suis débutant donc je progresse en faisant des essais...
Deplus, c'est mon idee, je pense qu'il est plus facile de traiter des chiffres qu'une image entiere en un seul bloc... mais je peux me tromper !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
11 mars 2012 à 20:27
Si tu veux comparer, pixel par pixel, deux images, tu n'es pas sorti de l'auberge ! Nul ne serait sorti de l'auberge ainsi ! Il suffit d'un seul pixel différent pour que la différence soit trouvée !
Mais, si tu y tiens (et à la condition que les deux images contiennent le même nombre de pixels, tant en hauteur qu'en largeur) ===>>
cela fait deux tableaux à deux dimensions chacun, réalisables par (chacun) deux boucles imbriquées, du genre :
pour chaque pixel x sur la largeur
  pour chaque pixel y sur la hauteur
    tableau(x,y) = ...
  suivant
suivant

puis comparer ainsi, élément par élément, les deux tableaux !
Je suiq en train de te faire comprendre que tu es en train de perdre ton temps ...


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
11 mars 2012 à 21:33
Salut

que fait le robot ?
Sait il répondre aux questions du forum
Private listimage1rgb As New List(Of Drawing.Color)
Private Function readbitmap(ByVal imagescan As Bitmap) As List(Of Drawing.Color)

        Dim pixelcolor As Drawing.Color
        Dim linepixel As String
        Dim listpixel As New List(Of Drawing.Color)
        ListBox1.Items.Clear()
        linepixel = String.Empty
        Try

            For row = 0 To imagescan.Width - 1
                linepixel = String.Empty
                For col = 0 To imagescan.Height - 1
                    pixelcolor = imagescan.GetPixel(row, col)
                    listpixel.Add(pixelcolor)
                Next

            Next

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
        Return listpixel
    End Function
  listimage1rgb = readbitmap(New Bitmap(Application.StartupPath & "\im1.jpg"))
0

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

Posez votre question
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012
12 mars 2012 à 12:32
Merci pour vos réponses.
Je ne prétend pas avoir LA solution ucfoutu, mais il faut bien commencer par un bout, si je ne fais rien je n'aurais jamais rien.
Maintenant je ne souhaite pas faire une comparaison genre true/false, disons qu'en extrapolant les 2 images à comparer je pourrais par exemple creer une image 3 niveaux:
- 0 = pixel different à 60% de difference
- 1 = pixel identique à 10% prés
- 0.5 = pixel semblable à au moins 60 %
Ensuite, ou en parallele, je peux creer de nouveaux filtres pour localiser plus finement une zone de l'image plus particulierement...

Merci ShayW pour le code, le probleme c'est que je ne vois pas comment en extraire la "substance" pour l'integrer dans le code ci dessou ( source vbfrance). Car je suis une bille en ce qui concerne "l'image". par contre je n'ai aucun soucis avec les boucles et tableaux.
Je pense donc que le code dont je dispose ne se prete pas franchement au code que tu me donnes plus haut, y'a moyen d'y remedier ? ou peut-etre faudrait-il commencer par alleger ce code d'acquisition d'image ?...

___Form1.vb___
Imports DirectX.Capture
Public Class Form1
Inherits System.Windows.Forms.Form
Dim NombreDeCapture As Int16
Dim TimeElapsCapture As Integer
Dim StartTime As Date
#Region " Code généré par le Concepteur Windows Form "
Public Sub New()
MyBase.New()
'Cet appel est requis par le Concepteur Windows Form.
InitializeComponent()
'Ajoutez une initialisation quelconque après l'appel InitializeComponent()
End Sub
'La méthode substituée Dispose du formulaire pour nettoyer la liste des composants.
Protected Overloads Overrides Sub Dispose(ByVal disposing As Boolean)
If disposing Then
If Not (components Is Nothing) Then
components.Dispose()
End If
End If
MyBase.Dispose(disposing)
End Sub
'Requis par le Concepteur Windows Form
Private components As System.ComponentModel.IContainer
'REMARQUE : la procédure suivante est requise par le Concepteur Windows Form
'Elle peut être modifiée en utilisant le Concepteur Windows Form.
'Ne la modifiez pas en utilisant l'éditeur de code.
Friend WithEvents ComboBox1 As System.Windows.Forms.ComboBox
Friend WithEvents Button1 As System.Windows.Forms.Button
Friend WithEvents ComboBox2 As System.Windows.Forms.ComboBox
Friend WithEvents Label1 As System.Windows.Forms.Label
Friend WithEvents PictureBox1 As System.Windows.Forms.PictureBox
Friend WithEvents PictureBox2 As System.Windows.Forms.PictureBox
Friend WithEvents Button4 As System.Windows.Forms.Button
<System.Diagnostics.DebuggerStepThrough()> Private Sub InitializeComponent()
Me.ComboBox1 = New System.Windows.Forms.ComboBox
Me.Button1 = New System.Windows.Forms.Button
Me.ComboBox2 = New System.Windows.Forms.ComboBox
Me.Label1 = New System.Windows.Forms.Label
Me.PictureBox1 = New System.Windows.Forms.PictureBox
Me.PictureBox2 = New System.Windows.Forms.PictureBox
Me.Button4 = New System.Windows.Forms.Button
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SuspendLayout()
'
'ComboBox1
'
Me.ComboBox1.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox1.Location = New System.Drawing.Point(160, 8)
Me.ComboBox1.Name = "ComboBox1"
Me.ComboBox1.Size = New System.Drawing.Size(368, 21)
Me.ComboBox1.TabIndex = 0
'
'Button1
'
Me.Button1.Location = New System.Drawing.Point(160, 48)
Me.Button1.Name = "Button1"
Me.Button1.Size = New System.Drawing.Size(368, 23)
Me.Button1.TabIndex = 1
Me.Button1.Text = "Valider la configuration"
'
'ComboBox2
'
Me.ComboBox2.DropDownStyle = System.Windows.Forms.ComboBoxStyle.DropDownList
Me.ComboBox2.Location = New System.Drawing.Point(160, 24)
Me.ComboBox2.Name = "ComboBox2"
Me.ComboBox2.Size = New System.Drawing.Size(368, 21)
Me.ComboBox2.TabIndex = 2
'
'Label1
'
Me.Label1.AutoSize = True
Me.Label1.Font = New System.Drawing.Font("Microsoft Sans Serif", 14.25!, System.Drawing.FontStyle.Bold, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Label1.ForeColor = System.Drawing.Color.Red
Me.Label1.Location = New System.Drawing.Point(24, 88)
Me.Label1.Name = "Label1"
Me.Label1.Size = New System.Drawing.Size(141, 24)
Me.Label1.TabIndex = 6
Me.Label1.Text = "Capture ready"
Me.Label1.TextAlign = System.Drawing.ContentAlignment.MiddleCenter
Me.Label1.Visible = False
'
'PictureBox1
'
Me.PictureBox1.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.PictureBox1.Location = New System.Drawing.Point(344, 120)
Me.PictureBox1.Name = "PictureBox1"
Me.PictureBox1.Size = New System.Drawing.Size(320, 240)
Me.PictureBox1.TabIndex = 7
Me.PictureBox1.TabStop = False
'
'PictureBox2
'
Me.PictureBox2.BorderStyle = System.Windows.Forms.BorderStyle.FixedSingle
Me.PictureBox2.Location = New System.Drawing.Point(16, 120)
Me.PictureBox2.Name = "PictureBox2"
Me.PictureBox2.Size = New System.Drawing.Size(320, 240)
Me.PictureBox2.TabIndex = 7
Me.PictureBox2.TabStop = False
'
'Button4
'
Me.Button4.Font = New System.Drawing.Font("Microsoft Sans Serif", 12.0!, System.Drawing.FontStyle.Regular, System.Drawing.GraphicsUnit.Point, CType(0, Byte))
Me.Button4.Location = New System.Drawing.Point(107, 368)
Me.Button4.Name = "Button4"
Me.Button4.Size = New System.Drawing.Size(557, 48)
Me.Button4.TabIndex = 5
Me.Button4.Text = "Capture image"
'
'Form1
'
Me.AutoScaleBaseSize = New System.Drawing.Size(5, 13)
Me.ClientSize = New System.Drawing.Size(680, 422)
Me.Controls.Add(Me.PictureBox1)
Me.Controls.Add(Me.Label1)
Me.Controls.Add(Me.ComboBox2)
Me.Controls.Add(Me.Button1)
Me.Controls.Add(Me.ComboBox1)
Me.Controls.Add(Me.PictureBox2)
Me.Controls.Add(Me.Button4)
Me.Name = "Form1"
Me.Text = "Choisir la caméra"
CType(Me.PictureBox1, System.ComponentModel.ISupportInitialize).EndInit()
CType(Me.PictureBox2, System.ComponentModel.ISupportInitialize).EndInit()
Me.ResumeLayout(False)
Me.PerformLayout()
End Sub
#End Region
Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.Load
Dim j As Short
Dim f As Filter
'listage des peripheriques video installés sur la machine
ComboBox1.Items.Clear()
For j = 0 To Dispositivos.VideoInputDevices.Count - 1
f = Dispositivos.VideoInputDevices(j)
ComboBox1.Items.Add(f.Name)
Next
If j > 0 Then ComboBox1.SelectedIndex = 0
'listage des peripheriques audio installés sur la machine
ComboBox2.Items.Clear()
For j = 0 To Dispositivos.AudioInputDevices.Count - 1
f = Dispositivos.AudioInputDevices(j)
ComboBox2.Items.Add(f.Name)
Next
If j > 0 Then ComboBox2.SelectedIndex = 0
End Sub
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
'pre configuration du capturing
'definission de la camera
CaptureInformation2.Camera = Dispositivos.VideoInputDevices(ComboBox1.SelectedIndex)
'mise en place du stream video et audio
CaptureInformation2.CaptureInfo = New DirectX.Capture.Capture(CaptureInformation2.Camera, Dispositivos.AudioInputDevices(ComboBox2.SelectedIndex))
'renseignement du panneau d'affichage de la video
CaptureInformation2.CaptureInfo.PreviewWindow = PictureBox2
'compteur pour les capture d'image (frame video)
CaptureInformation2.Counter = 1
CaptureInformation2.CounterFrames = 1
'configurations avancées
Configurer()
'pour faire plus joli
Button1.Enabled = False
'pour la gestion evennementiel de la capture d'ecran je cree un gestionnaire d evennement sur Framecapturecomplete
AddHandler CaptureInformation2.CaptureInfo.FrameCaptureComplete, AddressOf NewCaptureReady
End Sub
Private Sub Configurer()
'configurations avancées
'configuration du systeme de compression video et audio
CaptureInformation2.CaptureInfo.VideoCompressor = Dispositivos.VideoCompressors(1) 'compression video
'taille de la video
CaptureInformation2.CaptureInfo.FrameSize = New Size(320, 240) 'taille de la video
'FPS de la video
CaptureInformation2.CaptureInfo.FrameRate = 50 'FPS
'fichier .avi
''CaptureInformation.CaptureInfo.Filename = Application.StartupPath + "\essai.avi"
'lancement du streaming d'affichage
CaptureInformation2.CaptureInfo.RenderPreview()
End Sub
Private Sub NewCaptureReady(ByVal Sender As System.Windows.Forms.PictureBox)
'appele par le gestionnaire de handler sur l'evennement "FrameCapture
'ma picture capturé est arrivée...
Dim la As PictureBox = CType(Sender, PictureBox) 'la je converti mon picturebox en picturebox...je sais pas pourquoi, fo le faire sinom ca marche pas
'' histoire de savoir combien ca prends de temps de faire une capture.
Dim RunLength As System.TimeSpan = Now.Subtract(StartTime)
Dim TimeElapsCapture As Integer = RunLength.Milliseconds
Label1.Visible = True
NombreDeCapture = NombreDeCapture + 1
Label1.Text = "Capture nmr:" & NombreDeCapture & " Capture realisée en:" & TimeElapsCapture & " ms"
PictureBox1.Image = la.Image 'j affecte ma capture d'image a mon picturebox qui attend que ca.
End Sub
Private Sub Button4_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button4.Click
'demande une capture DirectX ...et lorsqu'elle est ready je la recoit par le Handler cree un peut plus haut
Dim StartTime As String = Now ' Starting date/time.
CaptureInformation2.CaptureInfo.CaptureFrame()
End Sub
End Class
___ModCap.vb___
Option Strict On
Option Explicit On
Imports DirectX.Capture
Imports System
Imports System.IO
Module ModCap
Public Structure Active2
Dim Camera As Filter
Dim CaptureInfo As DirectX.Capture.Capture '' l'ancienne declaration etait Dim CaptureInfo as Capture
Dim Counter As Integer
Dim CounterFrames As Integer
Dim PathVideo As String
End Structure
'le streaming en cours
Public CaptureInformation2 As Active2
'le filtre en cours
Public Dispositivos As New Filters()
End Module
0
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012
12 mars 2012 à 12:36
j'oubliais, pour le moment le robot ne fait rien, il est en cours de fabrication, et parallelement j'essais de creer son code.
Et pour en revenir à l'utilité de la caméra, si il arrive deja a suivre une ligne ca sera Wahooo !!!
0
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012
12 mars 2012 à 12:46
Encore une chose, je vois bien dans ton code ShayW l'arriver de l'image :
listimage1rgb = readbitmap(New Bitmap(Application.StartupPath & "\im1.jpg"))

Mais je ne comprends pas ce qui lui arrive aprés... comme je l'ai dit je suis une bille en image, alors si en plus elle passe de procedure en procedure en changeant de nom... je suis pommé !
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 mars 2012 à 12:53
explique ceci :
- 0 = pixel different à 60% de difference
- 1 = pixel identique à 10% prés
- 0.5 = pixel semblable à au moins 60 %

en termes/correspondances techniques. Ce sera un bon début, déjà (et te permettra d'y voir plus clair)
Explique ce que tu "vois" entre "semblable" et "identique", dans la foulée.
Je persiste et signe : tu perds ton temps en "élucubrations" simplistes, naïves, diverses et variées.
J'espère que tu ne cherches pas (sait-on jamais) ainsi à aboutir à une reconnaissance faciale, par exemple !
____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
Utilisateur anonyme
12 mars 2012 à 12:54
Bonjour,
Une discussion semblable (ou du moins en certains points) a déjà eu lieu dans CE LIEN




Cordialement


CF2i - Guadeloupe
Ingénierie Informatique
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
12 mars 2012 à 13:48
Salut

il y a surement un/des algorithm beaucoup
plus efficace pour ce que tu veux faire
en plus tu dis que le robot ne fait rien
alors comment écrire un code si on ne sait pas
ce que doit faire le robot
peut plus d'éclaircissement
0
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012
12 mars 2012 à 19:49
C'est marrant ca, je suis sûr qu'au fond vous voulez m'aider, mais comme souvent il faut d'abord que j'assiste a mon petit procés, donné par les sages du forum.
Sans parler des petites phrases assassines, blessantes et gratuites tel que :
Je persiste et signe : tu perds ton temps en "élucubrations" simplistes, naïves, diverses et variées. .
Cela dit, j'admire ton courage de signer cette phrase d'une connerie abyssale.

Bref, je construis un robot à ma maniere, et j'attaque le code a mon idee. Je ne pretend concurrencer ni la nasa ni asimo. Si j'avais un doctora en intelligence artificielle je ne serais pas là sur ce forum. Ma vision de la chose est peut-etre simple mais en aucun cas sterile.
Biensure je n'en suis pas encore à l'analyse de déplacements par differentiation logarithmique, mais je suis sur que j'arriverais à tirer quelque chose des tableaux de pixels, Avec ou sans toi ucfoutu, tout empalé que tu es sur ton misérable tas de connaissances.

Pour réponde à ta question ShayW, peut importe ce que fera mon robot, ma question est:
Comme extraire la valeur de chaque pixels de ma bitmap telle qu'elle se presente dans le code que j'ai placé plus haut.

Merci
0
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012
12 mars 2012 à 20:02
Par rapport à ca:
- 0 = pixel different à 60% de difference
- 1 = pixel identique à 10% prés
- 0.5 = pixel semblable à au moins 60 %
le but etant de creer une image extrapolée sur la correspondance entre les 2 premieres images.

0 = 60% de difference est une probabilité non négligeable que les pixels ne soient reelements pas les memes.
1= 10% d'ecart entre 2 pixel est acceptable si on tien compte des parasites et pertes, pour considerer que les pixels sont bien les memes.
0.5= 60% ou 50 % de difference, le doute est là, pour tenir compte de se doute relatif, autant l'inclure dans la résultante du filtre.

Ainsi par pixel, au lieu d'avoir 3 composantes de 0 à 255, on en a une seule de 0 à 1.

Ceci est mon premier filtre... perfectible sans aucun doute je vous l'accorde.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 mars 2012 à 20:06
Cela dit, j'admire ton courage de signer cette phrase d'une connerie abyssal


J'applaudis donc et ... te laisse montrer les résultats d'une pensée inversement proportionnelle aux abysses.
Fais donc (c'est en forgeant que l'on comprend mieux les gestes qu'un forgeron doit éviter).

Quant à
Comme extraire la valeur de chaque pixels de ma bitmap telle qu'elle se presente dans le code que j'ai placé plus haut.

où je pense que "comme" = "comment", je crois que tu as eu ta réponse :
Par une double boucle ! Relis donc !
Et bye ...

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 mars 2012 à 20:27
Pour mémoire :
pour chaque pixel x sur la largeur
  pour chaque pixel y sur la hauteur
    tableau(x,y) = ...
  suivant
suivant

si cela te parait du "chinois", ma foi ... je devine où tu vas.
et je veux m'abstenir (je deviens vieux et nerveux) de commenter ceci :
0 = 60% de difference est une probabilité non négligeable que les pixels ne soient reelements pas les memes.
1= 10% d'ecart entre 2 pixel est acceptable si on tien compte des parasites et pertes, pour considerer que les pixels sont bien les memes.
0.5= 60% ou 50 % de difference, le doute est là, pour tenir compte de se doute relatif, autant l'inclure dans la résultante du filtre.

Ainsi par pixel, au lieu d'avoir 3 composantes de 0 à 255, on en a une seule de 0 à 1.

Ceci est mon premier filtre... perfectible sans aucun doute je vous l'accorde.

Continue donc ainsi ! Tu es sur une voie .... royale

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012
12 mars 2012 à 20:38
Pour ce qui est :
pour chaque pixel x sur la largeur
pour chaque pixel y sur la hauteur
tableau(x,y) = ...
suivant
suivant
J'ai bien compris !
Mais je ne trouve pas le bon argument ou syntaxe pour l'ecrire en VB pour que cela fonction avec la bitmap du code que j'ai collé plus haut.

Pour ce qui es du : comme au lieu de comment,
L'orthographe est la science des imbéciles, le fait de faire une faute n'enleve en rien son sens à une phrase.

Pour cela : Continue donc ainsi ! Tu es sur une voie .... royale
Je te remercie !

Et pour cette derniere:
et je veux m'abstenir (je deviens vieux et nerveux) de commenter ceci :
Un jour j'ai eu la chance de bosser avec un prix nobel de physique, bien plus modeste que toi.

Sois mignon, si t'as juste de la haine, va gueuler un coup dehors, mais pollue pas mon post
0
cs_ShayW Messages postés 3253 Date d'inscription jeudi 26 novembre 2009 Statut Membre Dernière intervention 3 décembre 2019 57
12 mars 2012 à 20:42
bon


Private Function readbitmapIntoArray(ByVal imagescan As Bitmap) As Drawing.Color(,)
        Dim arraypixel(,) As Drawing.Color
        arraypixel = Nothing
        Try
            ReDim Preserve arraypixel(imagescan.Width - 1, imagescan.Height - 1)
            For row = 0 To imagescan.Width - 1
                For col = 0 To imagescan.Height - 1
                    arraypixel(row, col) = imagescan.GetPixel(row, col)
                Next
            Next

        Catch ex As Exception
            MessageBox.Show(ex.Message)
        End Try
        Return arraypixel
    End Function


'pour utiliser
on déclare un array de drawing.color
 Private tablepixel(,) As Drawing.Color
on déclare une variable de type bitmap
et on appelle la fonction readbitmapIntoArray
Dim mybitmap As New Bitmap(Application.StartupPath & "\image2.jpg")
tablepixel = readbitmapIntoArray(mybitmap)
0
NSUADI Messages postés 540 Date d'inscription mardi 4 août 2009 Statut Membre Dernière intervention 1 février 2013 2
12 mars 2012 à 21:33

L'orthographe est la science des imbéciles, le fait de faire une faute n'enleve en rien son sens à une phrase.


Je pense que l'émoticône est à la hauteur de mon étonnement!!!

Ce qui compte,ce n'est pas ce qu'on a mais plutôt ce que l'on fait avec ce qu'on a...

Visual Basic .Net is the best
and vb6.0
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 mars 2012 à 21:35
Un jour j'ai eu la chance de bosser avec un prix nobel de physique, bien plus modeste que toi

Je te crois d'autant plus que j'ai moi également eu une expérience de la même espèce ===>>
Change "bosser" par "glander", "nobel de physique" pour "cancre invétéré" et "modeste" par "sûr de ses âneries" (le reste est bon ...)


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
12 mars 2012 à 21:52
Mais je suis certain de ce que cette humble indication sera d'un grand secours (si tu la captes)
La fonction GetDIBits de la librairie gdi32 de l'Api de Windows te permet de faire beaucoup plus rapidement certaines "choses".
Apprends-la (à moins que VB.Net ne t'offre d'emblée l'équivalent, ce qui n'est pas exclu)
Tu l'auras donc ainsi et sans boucle aucune, ton "tableau", pour chacune de tes images.
Je te laisse faire le "reste du traitement que tu prévois de tricoter sur cette base" , qui, je te l'ai dit (et te le redis) ne te mènera pas très loin.




____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne installée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
0
cdelory Messages postés 39 Date d'inscription mercredi 7 mars 2012 Statut Membre Dernière intervention 26 septembre 2012
12 mars 2012 à 22:44
Merci ShayW pour tes infos.
Merci ucfoutu pour cette info que je ne manquerai pas de fouiller.
0
Rejoignez-nous