【发布时间】:2017-12-05 06:33:41
【问题描述】:
我是 Scala 编程的新手,我正在尝试使用 Scala(尤其是绿色)计算图像中的 RGB 值。下面是仅计算绿色像素的代码。我的问题是,如何使用 Scala map reduce 算法实现相同的目标?
....
val lightGreen = new Color(0,255,0)
val darkGreen = new Color(0,100,0)
var ctrGreen = 0
var ctrTotal = 0
for (x <- 0 until w)
for (y <- 0 until h) {
val c = new Color(img.getRGB(x, y))
if (isBetween(c, lightGreen,darkGreen)) {
ctrGreen += 1
}
ctrTotal += 1;
}
println("Green pixel count: " + ctrGreen)
println("Total pixel count: " + ctrTotal)
def isBetween(c: Color, c1: Color, c2: Color): Boolean = {
c.getRed >= c1.getRed && c.getRed <= c2.getRed &&
c.getBlue >= c1.getBlue && c.getBlue <= c2.getBlue &&
c.getGreen <= c1.getGreen && c.getGreen >= c2.getGreen
}
如何在 Scala 中使用 map reduce 算法计算绿色像素的数量?
【问题讨论】:
-
isBetween中的最后两个比较与前四个不一致。另外,您是指 Hadoop 中的 MapReduce 还是标准的map和reduce函数?