0
而不是逐行掃描像素, 我試圖從原點或圖像中的任意點掃描像素角度爲10',然後以10'爲單位遞增角度直到360',我想訪問在每個角落線下的像素,並做一些處理..掃描圖像像素
請幫助我如何訪問像素值位於特定的角度從原點或圖像中的任何點。
而不是逐行掃描像素, 我試圖從原點或圖像中的任意點掃描像素角度爲10',然後以10'爲單位遞增角度直到360',我想訪問在每個角落線下的像素,並做一些處理..掃描圖像像素
請幫助我如何訪問像素值位於特定的角度從原點或圖像中的任何點。
你可以做這樣的事情(你沒有指定的語言,這是Java):
bool[][] processedPixels = new bool[width][height]; // To avoid processing the same pixel twice
for(int deg = 0; deg < 360; deg+=10)
{
double angle = Math.toRadians(deg);
for(int r = 0; r < maxRadius; r++)
{
int x = originX + (int) Math.round(r * Math.cos(angle));
int y = originY + (int) Math.round(r * Math.sin(angle));
if(!processedPixels[x][y])
{
processPixel(x,y);
processedPixels[x][y] = true;
}
}
}
在C中,這將是幾乎相同的,使用math.h中的三角和倒圓:
include <math.h>
#define PI 3.14159 // use the accuracy you need
#define DEGREES_TO_RADIANS(angle) ((angle)/180.0 * PI)
int deg;
double rad;
int processedPixels[width][height] = {0};
for(deg = 0; deg < 360; deg+=10)
{
int r;
rad = DEGREES_TO_RADIANS(deg);
for(r = 0; r < maxRadius; r++)
{
int x,y;
x = originX + (int) round(r * cos(rad));
y = originY + (int) round(r * sin(rad);
if(processedPixels[x][y] == 0)
{
processPixel(x,y);
processedPixels[x][y] = 1;
}
}
}
非常感謝你..但我不熟悉java,你能幫我C嗎?還請幫助我包含頭文件。 – 2012-08-12 02:46:20
用一些C代碼編輯我的答案。 – ekholm 2012-08-12 09:20:23
非常感謝你... – 2012-08-12 13:20:15