/ / Scala i Spark: jak przejść przez obraz? - Scala, Apache-Spark

Scala and Spark: jak przejść przez obraz? - scala, apache-spark

Mam kilka plików binarnych, które są obrazkami i jachciałbym przejść przez siebie, rozdzielając piksele: każdy węzeł mojego klastra musi uzyskać RGB innej grupy pikseli niż innych węzłów i zapisać te RGB w kolekcji Scali.

ja używam SparkContext::binaryFiles ale nie wiem, jak sprawić, by Apache Spark był w stanie zrozumieć, że używam obrazu, że chciałbym przejść przez jego piksele za pomocą dystrybucji i że chcę uzyskać wartości RGB. Czy możesz mi pomóc to zrobić, proszę?

Odpowiedzi:

5 dla odpowiedzi № 1

Spark 2.3 dodał obsługę parsowania obrazów. Możesz czytać obrazy i uzyskiwać metadane i dane obrazów w następujący sposób:

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}")
}

Możesz znaleźć więcej informacji tutaj


2 dla odpowiedzi nr 2

Jeśli masz pliki binarne, wystarczy przekonwertować je na macierz liczb całkowitych (które są wartościami RGB). Przeczytaj, jak przekonwertować obrazy na tablicę RGB w scala tutaj:

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

Oto przykład wykonany w Pythonie:

Spark za pomocą obrazów odczytu PySpark