Image
Důležité
Databricks doporučuje použít zdroj dat binárního souboru k načtení dat obrázků do datového rámce Spark jako nezpracovaných bajtů. Viz Referenční řešení pro aplikace obrázků pro doporučené pracovní postupy pro zpracování dat obrázků.
Zdroj dat obrázku abstrahuje z podrobností o reprezentaci obrázků a poskytuje standardní rozhraní API pro načtení dat obrázků. Chcete-li číst soubory obrázků, zadejte zdroj format
dat jako image
.
df = spark.read.format("image").load("<path-to-image-data>")
Podobná rozhraní API existují pro Scala, Javu a R.
Můžete importovat vnořenou adresářovou strukturu (například použít cestu jako /path/to/dir/
) a zjišťování oddílů můžete použít zadáním cesty s adresářem oddílu (to znamená cestu, jako je /path/to/dir/date=2018-01-02/category=automobile
).
Soubory obrázků se načtou jako datový rámec obsahující jeden sloupec typu struktury, který se nazývá image
s následujícími poli:
image: struct containing all the image data
|-- origin: string representing the source URI
|-- height: integer, image height in pixels
|-- width: integer, image width in pixels
|-- nChannels
|-- mode
|-- data
kde jsou pole:
nChannels
: Počet barevných kanálů. Typické hodnoty jsou 1 pro obrázky ve stupních šedé, 3 pro barevné obrázky (například RGB) a 4 pro barevné obrázky s alfa kanálem.mode
: Celočíselná příznak označující, jak interpretovat datové pole. Určuje datový typ a pořadí kanálů, ve které jsou data uložená. Hodnota pole se očekává (ale nevynucuje) pro mapování na jeden z typů OpenCV zobrazených v následující tabulce. Typy OpenCV jsou definovány pro 1, 2, 3 nebo 4 kanály a několik datových typů pro hodnoty pixelů. Pořadí kanálů určuje pořadí, ve kterém jsou barvy uloženy. Pokud máte například typický obrázek se třemi kanály s červenými, modrými a zelenými komponentami, existuje šest možných objednávek. Většina knihoven používá RGB nebo BGR. Očekává se, že tři (čtyři) typy OpenCV kanálu budou v pořadí BGR(A).Mapování typu na čísla v OpenCV (datové typy x počet kanálů)
Typ S1 C2 C3 C4 CV_8U 0 8 16 24 CV_8S 1 9 17 25 CV_16U 2 10 18 26 CV_16S 3 11 19 27 CV_32U 4 12 20 28 CV_32S 5 13 21 29 CV_64F 6 14 22 30 data
: Obrazová data uložená v binárním formátu. Data obrázku jsou reprezentována jako trojrozměrné pole s rozměry (výška, šířka, nChannels) a hodnotami pole typu t, určené režimem. Pole je uloženo v pořadí hlavního řádku.
Funkce Databricks display
podporuje zobrazování dat obrázků. Viz obrázky.
Následující poznámkový blok ukazuje, jak číst a zapisovat data do souborů obrázků.
Získejte poznámkový blok
Zdroj dat obrázku dekóduje soubory obrázků během vytváření datového rámce Spark, zvětšuje velikost dat a zavádí omezení v následujících scénářích:
- Zachování datového rámce: Pokud chcete datový rámec zachovat v tabulce Delta pro snadnější přístup, měli byste zachovat nezpracované bajty místo dekódovaných dat, abyste ušetřili místo na disku.
- Náhodné prohazování oddílů: Náhodné prohazování dekódovaných dat obrázků zabírá více místa na disku a šířku pásma sítě, což vede k pomalejšímu náhodnému náhodnému prohazování. Dekódování obrázku byste měli co nejvíce zpozdit.
- Volba jiné dekódovací metody: Zdroj dat obrázku používá knihovnu Vstupně-výstupní operace image javax k dekódování obrázku, což vám brání v výběru jiných knihoven dekódování obrázků pro lepší výkon nebo implementaci přizpůsobené dekódovací logiky.
Tato omezení se dají vyhnout použitím zdroje dat binárního souboru k načtení dat obrázku a dekódování pouze podle potřeby.