我正在嘗試使用影像的底層顏色在影像上繪制網格以填充圓圈。但是有些像素沒有得到正確的顏色。在這種情況下,圓圈繪制為白色,但不應繪制為白色...
請參閱下面的我的代碼:
import processing.pdf.*;
PImage img;
color background = color(255);
void setup() {
size(1038, 525);
ellipseMode(CORNER);
noStroke();
//img = loadImage("noise2.jpg");
//img = loadImage("air.png");
img = loadImage("accidents.png");
image(img, 0, 0, width, height);
visualGrid(20, 0.4, false);
}
//void draw() {
// fill(noise.get(mouseX, mouseY));
// rect(width - 100, height - 100, 100, 100);
//}
void visualGrid(int circleSize, float fillSmoothing, boolean debug) {
float halfCircle = circleSize / 2.0;
int amountX = floor(width / circleSize);
int amountY = floor(height / circleSize);
amountY = floor(amountY * 0.1);
float offsetX = (width - (amountX * circleSize halfCircle)) / 2 halfCircle;
float offsetY = (height - amountY * circleSize amountY * circleSize * 0.1) / 2;
for (int x = 0; x < amountX; x ) {
for (int y = 0; y < amountY; y ) {
float styledOffsetX = (y % 2 == 0) ? offsetX - halfCircle : offsetX;
float xpos = x * circleSize styledOffsetX;
float ypos = circleSize * 0.9 * y offsetY;
int sectionSize = round(circleSize * fillSmoothing);
float sectionOffset = (circleSize - sectionSize) / 2;
color c = getAvgImgColor(img.get(round(xpos sectionOffset), round(ypos sectionOffset), sectionSize, sectionSize));
//fill(noise.get(round(xpos), round(ypos)));
if(debug) {
stroke(255, 0, 255);
strokeWeight(1);
}
fill(c);
ellipse(xpos, ypos, circleSize, circleSize);
if(debug) {
noStroke();
fill(255, 0, 255);
rect(round(xpos sectionOffset), round(ypos sectionOffset), sectionSize, sectionSize);
}
}
}
}
color getAvgImgColor(PImage section) {
section.loadPixels();
int avgR = 0, avgG = 0, avgB = 0;
int totalPixels = section.pixels.length;
for (int i = 0; i < totalPixels; i ) {
color pixel = section.pixels[i];
//if(pixel == background) continue;
avgR = red(pixel);
avgG = green(pixel);
avgB = blue(pixel);
}
return color(
round(avgR / totalPixels),
round(avgG / totalPixels),
round(avgB / totalPixels)
);
}
這就是我在有問題的影像上繪制網格時得到的結果:
正如您在圓圈區域中看到的,并非所有圓圈都應該用白色填充......這種情況發生在比圓圈更多的地方,只是將此影像與下面一個。
下面我上傳原圖,大家可以用它來除錯。

uj5u.com熱心網友回復:
草圖的尺寸 (1038 x 525) 與您采樣的影像 (2076 x 1048) 的尺寸不匹配,這可能解釋了未對齊的原因。
如果size(2076, 1048)不是一個選項,請嘗試在加載影像后調整其大小setup():
...
img = loadImage("accidents.png");
img.resize(width, height);
...
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/370676.html
