您好,登錄后才能下訂單哦!
今天就跟大家聊聊有關Spark2.4是否支持圖片格式數據源,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結了以下內容,希望大家根據這篇文章可以有所收獲。
Spark2.4開始支持內置的圖片數據源讀取器,可以直接讀取圖片的數據。
val df = spark.read.format("image").load("/opt/pic/")
目錄可以還可以是/path/to/dir/**和分區目錄。
Image Schema
讀取的數據會生成一個DF,該DF就一列列名字叫做 image。但是其實他是個嵌套數據結構,具體結構如下:
root|-- image: struct (nullable = true)| |-- origin: string (nullable = true)| |-- height: integer (nullable = true)| |-- width: integer (nullable = true)| |-- nChannels: integer (nullable = true)| |-- mode: integer (nullable = true)| |-- data: binary (nullable = true)
orgin:代表圖片的路徑。
nChannels:顏色通道的數量。對于灰度圖像,典型值為1,對于彩色圖像(例如,RGB),典型值為3,對于具有alpha通道的彩色圖像,典型值為4。
mode:整數標志,提供有關如何解釋數據字段的信息。它指定數據存儲的數據類型和通道順序。希望(但不強制)字段的值映射到下面顯示的OpenCV類型之一。OpenCV類型定義為1,2,3或4個通道,并為像素值定義了幾種數據類型。通道順序指定顏色的存儲順序。例如,如果有一個包含紅色,藍色和綠色組件的典型三通道圖像,則有六種可能的排序。大多數庫使用RGB或BGR。希望三(4)個通道OpenCV類型為BGR(A)順序。
OpenCV中的類型到數字的映射(數據類型x通道數)
data:以二進制格式存儲的圖像數據。圖像數據表示為具有尺寸形狀(高度,寬度,n通道)和由schema字段指定的類型t的數組值的三維陣列。該數組以row-major順序存儲。
通道順序(channel order)
通道順序指定存儲顏色的順序。例如,如果您有一個包含紅色,藍色和綠色組件的典型三通道圖像,則有六種可能的排序。大多數庫使用RGB或BGR。預計三(4)個通道OpenCV類型為BGR(A)順序
案例
對于有監督學習,可以用label作為分區列,目前label僅僅支持數字類型。
val spark = SparkSession
.builder()
.appName("Spark reads pics")
.master("local[2]")
.getOrCreate()
val df = spark.read.format("image").load("/opt/pic")
df.printSchema()
df.select(col("label"),
col("image.origin"),
col("image.height"),
col("image.width"),
col("image.nChannels"),
col("image.mode")).show(1,false)
spark.stop()
關于圖片處理,目前spark支持的算法并不是很多,希望后續版本繼續完善吧。
看完上述內容,你們對Spark2.4是否支持圖片格式數據源有進一步的了解嗎?如果還想了解更多知識或者相關內容,請關注億速云行業資訊頻道,感謝大家的支持。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。