Bild-Aussenkante verschieben



  • Hallo allerseits,
    hab ein Problem und mir fällt nicht wircklich ein wie ich es lösen könnte und hoffe hier auf hilfe.

    Aufgabenstellung:
    Mit einer Fräsmaschine ein Schattenrissbild fräsen. Das ganze wird so ablaufen das ich der Fräse über die RS232 Zeilenweise Anfangs und Enpunkte schicke und diese das dann ausfräßt.

    Die Bilder werden auf blauem Hintergrund aufgenommen.

    In C++ (Visual Studio 2005) lad ich jetzt das Bild als bitmap und dann steh ich teilweise ein bisschen an.

    1. Das Bild ins richtige Format bekommen (4/3) geht daweil so ->

    w=originalbild->width
    h=originalbild->height
    
    if(w>4*h/3) w=4*h/3;
    else h=3*w/4;
    tempbild2 = originalbild->Clone( Rectangle(0,0,w,h), tempbild->PixelFormat );
    w = tempbild2->Width;
    h = tempbild2->Height;
    image1 = tempbild->Clone( Rectangle(0,0,40*10,30*10), tempbild->PixelFormat );
    		iw = w/400;
    		ih = h/300;
    for (x=0;x<(ih*300);x+=ih)
    		{
    		for (y=0;y<(iw*400);y+=iw)
    		{
    			image1->SetPixel(yy,xx,tempbild2->GetPixel (y,x));
    			yy++;
    		}
    			xx++;
    			yy=0;
    		}
    		}
    

    ich schneids also mal zurecht,
    dann hab ich ein 2. bitmap mit w2=400 h2=300 und da versuch ich das zugeschnitte reinzubekommen funktioniert aber halt leider nur wenn das bild ein vielfaches von 400 breit ist oder nur wenig drüber ansonsten fehlt recht viel rechts und unten --> hier wär ich mal über jede hilfe dankbar

    beim 2. problem bin ich leider vollkommen planlos:

    also nachdem ich das bild verkleinert hab mach ich den hintergrund weiß und den kopf schwarz

    Da der Fräskopf allerdings 5mm Breit ist müsste ich jetzt die außenränder Normal zur Tangente der Außenkontur 2.5mm nach innen verschieben(ca. 7 pixel), hab aber keinen plan wie ich das anstellen könnte. muss natürlich nicht 100% exakt werden aber ähnlichkeiten mit der originalperson sollte man später an der ausgefräßten platte schon erahnen 😉 wär super wenn mir wer da ein paar denkanstöße geben könnte.

    und zu guter letzt noch eine nebenfrage, mich würde interesieren obs eine funktion gibt mit der man einen "Kernel" auf ein bitmap anwenden kann?

    hoffe auf ein paar tipps, wenn was unklar ist bitte nachfragen ist ja schon recht spät da kann ich mich wohl nicht mehr so deutlich ausdrücken

    mfg
    Matthias



  • hab mitlerweile eine lösung gefunden
    ich multiplizier das bitmap einfach mit einem "runden" Kernel


Anmelden zum Antworten