/ / как да преобразуваме изображение (.jpg) в масив в скала и как да преброим зеления пиксел в същия масив, използвайки скала - скала

как да конвертирате изображението (.jpg) в масив в скала и как да преброите зеления пиксел в същия масив с помощта на scala-scala

import java.io.File
import javax.imageio.ImageIO
import java.awt.image.BufferedImage

val img = ImageIO.read(newFile("Filename.jpg"))

val w = img.getWidth
val h = img.getHeight

for (x <- 0 until w)
for (y <- 0 until h)
img.getRGB(x,y)

ImageIO.write(img,"jpg",new File("test.jpg"))

Как да конвертирате img в байт масив и пребройте зелените пиксели в същото.

Отговори:

0 за отговор № 1

Можете да преброите зеления пиксел, като сравните RGB стойността на всеки пиксел с RGB стойност на зеления цвят. Пример:

    ...
val w = img.getWidth
val h = img.getHeight

val green = Color.GREEN

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 (isEqual(c, green)) {
ctrGreen += 1
}
ctrTotal += 1;
}

println("Green pixel count: " + ctrGreen)
println("Total pixel count: " + ctrTotal)
}

def isEqual(c1: Color, c2: Color): Boolean = {
c1.getRed == c2.getRed && c1.getBlue == c2.getBlue && c1.getGreen == c2.getGreen
}

Но понякога е трудно да се намери точното съвпадение за цветовата RGB стойност (т.е. в случай на зелено тя е (0,255,0)).

    ....
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
}