圖像

重要的

磚建議您使用二進製文件數據源將圖像數據加載到火花DataFrame作為原始字節。看到參考圖像應用的解決方案推薦的工作流程來處理圖像數據。

圖像數據來源抽象的圖像表示的細節,並提供一個標準API加載圖像數據。讀取圖像文件,指定數據源格式作為圖像

df=火花格式(“圖像”)負載(“< path-to-image-data >”)

類似的api存在Scala、Java和R。

您可以導入一個嵌套的目錄結構(例如,使用一個路徑/ / dir / /路徑),您可以使用分區發現通過指定一個路徑分區目錄(即路徑/道路/ / dir /日期= 2018-01-02 /類別=汽車)。

圖像結構

圖像文件加載包含單個struct-type DataFrame列圖像以下字段:

圖像:結構體包含所有圖像數據|——起源:字符串代表URI|——高度:整數,圖像高度像素|——寬度:整數,圖像寬度像素|——nChannels|——模式|——數據

的字段有:

  • nChannels:顏色通道的數量。灰度圖像的典型值是1、3為彩色圖像(例如,RGB),和4彩色圖像alpha通道。

  • 模式:整數標記表明如何解釋數據字段。它指定了數據類型和通道秩序中存儲的數據。字段的值預計(但不執行)映射到一個OpenCV類型顯示在下麵的表。OpenCV類型被定義為1、2、3或4通道和幾個像素值的數據類型。通道順序指定顏色的順序存儲。例如,如果你有一個典型的三個通道圖像用紅、藍、綠的組件,有六個可能的排序。大多數圖書館使用RGB或BGR。三(四)通道OpenCV類型預計將在BGR (A)。

    類型映射到數字OpenCV(數據類型x頻道的數量)

    類型

    C1

    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.

  • 數據:圖像數據存儲在一個二進製格式。圖像數據被表示為一個三維數組的尺寸形狀(高度、寬度、nChannels)和數組類型t的值指定的模式。數組存儲在存儲順序。

顯示圖像數據

的磚顯示函數支持顯示圖像數據。看到圖片

筆記本

以下筆記本顯示了如何讀和寫數據圖像文件。

圖像數據來源的筆記本

在新標簽頁打開筆記本

圖像數據來源的局限性

圖像數據源解碼圖像文件創建火花DataFrame期間,增加了數據大小,並引入了限製在以下場景:

  1. 堅持DataFrame:如果你想堅持DataFrame成三角洲表,方便使用,你應該堅持原始字節而不是解碼的數據來節省磁盤空間。

  2. 洗牌的分區:洗牌解碼圖像數據需要更多的磁盤空間和網絡帶寬,導致慢的洗牌。你應該盡可能地推遲解碼圖像。

  3. 選擇其他的解碼方法:圖像數據源使用圖像的IO庫javax解碼圖像,它阻止你選擇其他圖像解碼庫獲得更好的性能或實施定製的解碼邏輯。

這些限製可以避免使用二進製文件數據源隻在需要的時候加載圖像數據和解碼。