Avatar billede lasserasch Juniormester
24. april 2010 - 20:01 Der er 7 kommentarer og
1 løsning

Billed manipulering (Erstatning af grøn eller blå farve som i vejrudsigten)

Hejsa.

Jeg skal lave en windows applikation som kan tage et billed med et webcam.

I dette billed vil der være en del af billedet som er f.eks. blå eller grøn. Denne del vil jeg gerne kunne erstatte med et andet bitmap billed.

Så mit spørgsmål er:

1. Jeg har et Bitmap objekt. Med udgangspunkt i det, hvordan kan jeg så definere at den skal lede efter en bestemt farve indenfor et statisk angivet koordinatset. Altså f.eks. kun i 2 cm af billedet øverst til højre.

2. Hvordan kan man erstatte en specifik farve (f.eks. grøn eller blå) med et andet bitmap og så stå med et bitmap objekt til sidst som er det færdige billede. Altså et bitmap objekt hvor farven er blevet erstattet med det jeg nu gerne vil have derind i stedet for.


Mvh.
Lasse
Avatar billede DanielXavier Nybegynder
24. april 2010 - 20:43 #1
Kan du ikke bruge Replace color, i Photoshop cs?
Avatar billede lasserasch Juniormester
24. april 2010 - 21:16 #2
Jeg er ikke ved at opfinde min egen måde at lave rugbrødsarbejde på :-)

Det skal bruges som en del af en applikation og skal foregå helt automatisk...

Der bliver taget et billed via et webcam. Programmet skal har så fået at vide at det skal starte med at lede efter en grøn farve på position x,y og slutte igen på x2, y2.

Hver gang den støder på et pixel som er grønt, skal den gå ned i et andet bitmap og indsætte pixel fra dette billede fundet på samme position.

Altså ligesom man gør i vejrudsigten med den blå skærm osv.

Jeg er bare ikke super hård til billedmanupulation i C# .Net, så derfor håber jeg der sidder en guru derude som kan give et eksempel på hvordan det kan gøres.

Mvh.
Lasse
Avatar billede DanielXavier Nybegynder
24. april 2010 - 21:22 #3
Arhh ok, nu er jeg med.. Chromakey funktion.

Hvordan det automatiseres kan jeg ikke hjælpe med desvære, men mon ikke du kan få noget ud af at søge på Google efter Chromakey
Avatar billede Syska Mester
24. april 2010 - 21:50 #4
Et problem er vel også at farven ikke nødvendigvis er 100% grøn.

Men det burde da næsten være lige ud af landevejen.

2 for loop, x og y.

og så kontroller om den pixel er inde for dine margins af en grøn farve, og så erstat den.

Fairly simple lyder det, men har dog ikke prøvet det i praksis.

mvh
Avatar billede lasserasch Juniormester
25. april 2010 - 11:57 #5
Hmmm, nå det blev en lidt anden løsning. Kan ikke umiddelbart finde noget omkring Chromakey i C#, selvom det nok havde været den bedste løsning.

Jeg nøjes og lægger bare et billed billed ind over mit webcam billed. Så må man bare ikke stikke sin hånd ind i den ramme hvor mit overlægningsbilled bliver lagt på. Så forsvinder ens hånd i hvert fald :-)


Løsningen blev det her indtil videre:

private void AddOverlayImage()
        {
                Pen myPen2 = new Pen(Color.Red, 1);
                Matrix myMatrix = new Matrix();
                myMatrix.Rotate(Properties.Settings.Default.overlayimg_point_angle, MatrixOrder.Append);
             
                Rectangle r = new Rectangle(
                    Properties.Settings.Default.overlayimg_point_x,
                    Properties.Settings.Default.overlayimg_point_y,
                    Properties.Settings.Default.overlayimg_point_width,
                    Properties.Settings.Default.overlayimg_point_height
                    );

                Bitmap bmp = new Bitmap(Properties.Settings.Default.overlay_image);
                   
                TextureBrush tb = new TextureBrush(bmp);
           
                Graphics g = Graphics.FromImage(pictureBox1.Image);
                g.Transform = myMatrix;
                g.FillRectangle(tb, r);

                pictureBox1.Update();
                pictureBox1.Refresh();
        }

Men stadig, hvis der er en som har et bedre forslag, så er jeg meget åben overfor forslag...

Mvh.
Lasse
Avatar billede Syska Mester
25. april 2010 - 12:13 #6
Tror heller ikke han mente at der var noget i .NET til det, men bare at det tekniske term for det var Chromakey :-)

Kunne jo ske en eller andet havde lavet et 3 parts bibliotek som kunne det :-)

mvh
Avatar billede lasserasch Juniormester
17. september 2010 - 09:32 #7
Lad os få lukket den her. Dem som vil have points sender lige et svar ik :-)

Mvh.
Lasse
Avatar billede lasserasch Juniormester
11. oktober 2010 - 21:21 #8
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester