AndroidHealthClinic

Sticky Wat heeft jouw dag verpest?

Die sequentieel is precies zoals ik zei (met MAX), maar dan in 2 richtingen en de waarde wordt direct in het origineel geplaatst i.p.v. een nieuwe afbeelding. Moet een eitje zijn toch? Moet trouwens ook geen memerror opleveren.

Code:
bool changed = true;
while(changed)
{
changed = false;

 //raster
 for(int x = 0; x < mask.cols; x++)
 {
    for(int y = 0; y < mask.rows; y++)
    {
           //voor elke neighbor, vergelijk met (x, y), als groter dan (x, y), vervang (x, y)
//als vervangen: changed = true;
     }
 }

  //anti-raster
//omgekeerde
}
Ik krijg deze vage shit tijdens runtime:
Code:
*** glibc detected *** ./sequential_reconstruction: free(): invalid pointer: 0x00007fce34f6f778 ***
Gaat heel wat iteraties goed, en loopt uiteindelijk zomaar tijdens het itereren spaak op de volgende regel code:

Code:
    int max;

    if(raster) {
        for(int y = 0; y < mask.rows; y++) {
            for(int x = 0; x < mask.cols; x++) {
                [B]max = get_local_max(Point(x, y), true, marker, se_size);[/B]
                marker.at<uchar>(x, y) = get_min(max, mask.at<uchar>(x, y));
            }
        }
    }
get_local_max doet het wel prima op dat moment, en direct voor de return statement kan ik zien dat er gewoon 'n integer gereturned gaat worden. Ik snap hier geen sjors van, max hoort gewoon die integer waarde toegekend te krijgen zonder probleem. Ik haat programmeertalen zonder garbage collection en ik haat ****ing pointers. C++ en consorten zijn voor vervelende nerds.
 
Laatst bewerkt:
Ik krijg deze vage shit tijdens runtime:
Code:
*** glibc detected *** ./sequential_reconstruction: free(): invalid pointer: 0x00007fce34f6f778 ***
Gaat heel wat iteraties goed, en loopt uiteindelijk zomaar tijdens het itereren spaak op de volgende regel code:

Code:
    int max;

    if(raster) {
        for(int y = 0; y < mask.rows; y++) {
            for(int x = 0; x < mask.cols; x++) {
                [B]max = get_local_max(Point(x, y), true, marker, se_size);[/B]
                marker.at<uchar>(x, y) = get_min(max, mask.at<uchar>(x, y));
            }
        }
    }
get_local_max doet het wel prima op dat moment, en direct voor de return statement kan ik zien dat er gewoon 'n integer gereturned gaat worden. Ik snap hier geen sjors van, max hoort gewoon die integer waarde toegekend te krijgen zonder probleem. Ik haat programmeertalen zonder garbage collection en ik haat ****ing pointers. C++ en consorten zijn voor vervelende nerds.

Eens, hoewel c# chill is.

Probeer het eens zoals ik zei?
Zal het hieronder iets netter typen:
Code:
//Sequential quick and dirty

Image mask; //inputimage, de mask
Image j; //de marker


//aan te raden die afbeelding in een 2D array van ints te zetten ivm snelheid.

//overige code

//Dilation
bool changed = true; //check for stability

while(changed) //until stability
{
    changed = false;
    //raster
    for(int y = 0; y < mask.rows; y++)
    {
        for(int x = 0; x < mask.cols; x++) 
        {
            int max = get_local_max(mask, x, y, true);
            if(max != mask[x, y])
            {
                mask[x, y] = max;
                changed = true;
            }
        }
    }
    
    //anti-raster
    for(int y = mask.rows; y >= 0; y--)    
    {
        for(int x = mask.cols-1; x >= 0; x--) 
        {
            int max = get_local_max(mask, x, y, false);
            if(max != mask[x, y])
            {
                mask[x, y] = max;
                changed = true;
            }
        }
    }
}

//geen idee van c++ notatie
private int get_local_max(Image mask, int x, int y, bool isRaster)
{
    //note: geen rekening gehouden met x == 0 || y == 0 || x = mask.cols-1 || y = mask.rows-1
    int max = mask[x, y];
    if(isRaster)
    {
    //XXX
    //X
    
    //if (neighbor > max) ? max = neighbor : nothing
    }
    else
    {
    
    //XXX
    //  X
    
    //if (neighbor > max) ? max = neighbor : nothing
    }
    return max;
}

Ik ga naar bed, gooi opdracht of iets eens online, dan probeer ik het morgen ff in c#.
 
geld is op
 
[Afbeelding niet meer beschikbaar]
 
Je hebt haar gepassed naar een kamergenoot van je?
nah, ik begon van die kinderachtige afstoot en aantrek games met haar te spelen, en nu pakt zij mij volgens mij terug door iemand anders te nken. terwijl zij wist dat ik die dag thuis was. word je hard van, van dit soort stomme dingen. die ergens best wel grappig zijn.
 
op het werk met een kapotte laptop, standaard procedure eerst backup maken.
normaal gesproken doen we dat via ftp met acronis, dit werkte nu niet dus moest naar usb disk schrijven. t*ring ding 24 uur bezig geweest, eindelijk klaar dacht ik. ging die tijd blijkbaar maar over een partitie. dus hij gaf vrolijk aan dat tie met partitie 2 ook nog wel 24 uur bezig was.
 
Weer zo gaar als n tientje. potverdomme k*t alcohol ook
 
Ik krijg deze vage shit tijdens runtime:
Code:
*** glibc detected *** ./sequential_reconstruction: free(): invalid pointer: 0x00007fce34f6f778 ***
Gaat heel wat iteraties goed, en loopt uiteindelijk zomaar tijdens het itereren spaak op de volgende regel code:

Code:
    int max;

    if(raster) {
        for(int y = 0; y < mask.rows; y++) {
            for(int x = 0; x < mask.cols; x++) {
                [B]max = get_local_max(Point(x, y), true, marker, se_size);[/B]
                marker.at<uchar>(x, y) = get_min(max, mask.at<uchar>(x, y));
            }
        }
    }
get_local_max doet het wel prima op dat moment, en direct voor de return statement kan ik zien dat er gewoon 'n integer gereturned gaat worden. Ik snap hier geen sjors van, max hoort gewoon die integer waarde toegekend te krijgen zonder probleem. Ik haat programmeertalen zonder garbage collection en ik haat ****ing pointers. C++ en consorten zijn voor vervelende nerds.


14s5ds.jpg
 
Terug
Naar boven