2014-10-30 4 views
0

Мой код принимает изображение и создает изображение пуантилиста, создавая эллипсы с цветом пикселя.Подсчет фигур/объектов, созданных непрерывно в процессе обработки

Через некоторое время изображение полностью «окрашено», и я хочу автоматически переключиться на другое изображение в моей папке эскиза.

Я хотел бы иметь возможность подсчитать количество генерируемых эллипсов. Когда генерируются эллипсы «z», я хочу сообщить своему коду стереть все эллипсы и начать с нового изображения.

КОД:

PImage img; 
int smallPoint, largePoint; 

void setup() { 
    size(1920, 1080); 
    img = loadImage("rio.jpg"); 
    smallPoint = 12; 
    largePoint = 12; 
    imageMode(CENTER); 
    noStroke(); 
    background(255); 
} 

void draw() { 



for (int i = 0; i < 1000; i++) 
    { 
    drawADot(); 
    } 
} 

void drawADot() 
{ 

    int imageWidth = img.width; 
    int imageHeight = img.height; 
    int ptSize = int(random(100)) + 4; 

    float pointillize = map(mouseX, 0, width, smallPoint, largePoint); //not used right now but for controlling ellipse size 
    int x = int(random(0, imageWidth/8)); 
    int y = int(random(0, imageHeight/8)); 




    color pix = img.get(x*8, y*8); 
    fill(pix, 255); 
    ellipse(x*8, y*8, pointillize, pointillize); 


} 

ответ

0

Хранить изображения в массиве, сосчитать точки добавлены, и условно (на основе числа точек) изменить образ используется для следующего в массиве, вы можете пройти изображение для функции drawADot() в качестве параметра. Что-то вроде:

PImage img[] = new PImage[2]; 
int smallPoint, largePoint; 
final int DOTSPERDRAW = 500; 
int numberOfDots = 0; 
final int MAXDOTS = DOTSPERDRAW * 100; 
PImage workingImage ; 
int index; 

void setup() { 
    size(810, 455); 
    img[0] = loadImage("http://assets2.exame.abril.com.br/assets/images/2014/8/506584/size_810_16_9_rio.jpg"); 
    img[1] = loadImage("http://upload.wikimedia.org/wikipedia/commons/1/1e/Pilcomayo_rio.jpg"); 
    img[1].resize(810, 0); 
    smallPoint = 12; 
    largePoint = 12; 
    imageMode(CENTER); 
    noStroke(); 
    background(255); 
    workingImage = img[0]; 
} 

void draw() { 

    if (numberOfDots > MAXDOTS) { 
    index = (index + 1) % img.length; 
    workingImage = img[index]; 
    numberOfDots = 0; 
    } 

    for (int i = 0; i < DOTSPERDRAW; i++) 
    { 
    drawADot(workingImage); 
    } 

    numberOfDots += DOTSPERDRAW; 
} 

void drawADot(PImage theImage) 
{ 

    int imageWidth = theImage.width; 
    int imageHeight = theImage.height; 
    int ptSize = int(random(100)) + 4; 

    float pointillize = map(mouseX, 0, width, smallPoint, largePoint); //not used right now but for controlling ellipse size 
    int x = int(random(0, imageWidth/8)); 
    int y = int(random(0, imageHeight/8)); 




    color pix = theImage.get(x*8, y*8); 
    fill(pix, 255); 
    ellipse(x*8, y*8, pointillize, pointillize); 
} 
+0

Работало именно так, как я хотел. Спасибо за помощь! – thearistocrat

Смежные вопросы