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 № 1Spark 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