/ / Scala e Spark: come passare attraverso un'immagine? - scala, apache-spark

Scala e Spark: come passare attraverso un'immagine? - scala, apache-spark

Ho dei file binari che sono immagini e iovorrebbe passare attraverso se stessi, distribuendo i pixel: ogni nodo del mio cluster deve ottenere l'RGB di un gruppo diverso di pixel (s) rispetto a quelli di un altro nodo e memorizzare questi RGB in una raccolta Scala.

sto usando SparkContext::binaryFiles ma non so come rendere Apache Spark "in grado di capire" che sto usando un'immagine, che vorrei passare attraverso i suoi pixel usando la distribuzione, e che vorrei ottenere i valori RGB. Potresti aiutarmi a farlo per favore?

risposte:

5 per risposta № 1

Spark 2.3 ha aggiunto il supporto per l'analisi delle immagini. Puoi leggere le immagini e ottenere meta dati e dati di immagine come questo:

import org.apache.spark.ml.image.ImageSchema._
import java.nio.file.Paths

val images = readImages("path/to/images")

images.foreach { rrow =>
val row = rrow.getAs[Row](0)
val filename = Paths.get(getOrigin(row)).getFileName().toString()
val imageData = getData(row)
val height = getHeight(row)
val width = getWidth(row)

println(s"${height}x${width}")
}

Puoi trovare qualche informazione in più Qui


2 per risposta № 2

Se si dispone dei file binari, è sufficiente convertirli in una matrice di numeri interi (che sono i valori RGB). Leggi come convertire le immagini nell'array di RGB in scala qui:

http://otfried.org/scala/image.html

Ecco un esempio fatto in Python:

Spark usando PySpark legge le immagini