+ -
当前位置:首页 → 问答吧 → [图片取左半边][取连续数值的另一半]小小的结构控制

[图片取左半边][取连续数值的另一半]小小的结构控制

时间:2011-12-21

来源:互联网

有一个连续数列0-10000
回圈结束到几是图片每个pixel的结束,例如 http://processing.org/learning/pixels/
假设一章图编号如下,想要只取左半边

0 - 31 | 32 - 63
64 - 95 | 96 - 127
......10000

其实要做图片左边的运算,只需要 0-31 && 64-65左办边的数值,一直写不出for和if的关系

作者: xlinx   发布时间: 2011-12-21

我的概念是这样
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
int[] image = new int[10000];
int rowSize = 64;
 
for(int i=0; i<image.length; ) { int position = (i + 1) % rowSize; //取得pixel在二维中的 y座标
       if(position >= (rowSize/2)) {//一旦发现不在左边后 i += rowSize/2; //直接跳下一行 continue; }
       {
  //your execute }
       ++i;
}  


如果你不计较效能的话,看有没有API可以直接把左半边的ROI(Region of Image)抓出来
等处理完后在放回去
不过这样会一来一回的存取阵列
比较耗时

作者: Saber_Servant   发布时间: 2011-12-21

谢谢你
我改了一下
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
void convertBW() { loadPixels(); int rowSize = 64; int gridScale =4; //因为我要取每4pixel方格中的值 for (int i=0; i<recW*recH*2;) { int position = (i + 1) % rowSize; //取得pixel在二维中的 y座标 if (position >= (rowSize/2)) {//一旦发现不在左边后 i += rowSize/2; //直接跳下一行 //continue; } //do something here println("thx Saber_Servant and i="+i); i+=gridScale; } updatePixels();
}

作者: xlinx   发布时间: 2011-12-21