Spark 如何使用图像格式读取我的图像?

2024-01-12

这可能是一个愚蠢的问题,但我无法弄清楚 Spark 如何使用spark.read.format("image").load(....)争论。

导入我的图像后,它给出以下内容:

>>> image_df.select("image.height","image.width","image.nChannels", "image.mode", "image.data").show()
+------+-----+---------+----+--------------------+
|height|width|nChannels|mode|                data|
+------+-----+---------+----+--------------------+
|   430|  470|        3|  16|[4D 55 4E 4C 54 4...|
+------+-----+---------+----+--------------------+

我得出的结论是:

  • 我的图像是 430x470 像素,
  • 我的图像是彩色的(RGB 由于 nChannels = 3),它是 openCV 兼容类型,
  • my image mode is 16 which corresponds to a particular openCV byte-order.
    • 有人知道我可以浏览哪个网站/文档来了解更多信息吗?
  • the data in the data column is of type Binary but:
    • 当我跑步时image_df.select("image.data").take(1)我得到的输出似乎只有一个数组(见下文)。
>>> image_df.select("image.data").take(1)

# **1/** Here are the last elements of the result
....<<One Eternity Later>>....x92\x89\x8a\x8d\x84\x86\x89\x80\x84\x87~'))]

# 2/ I got also several part of the result which looks like:
.....\x89\x80\x80\x83z|\x7fvz}tpsjqtkrulsvmsvmsvmrulrulrulqtkpsjnqhnqhmpgmpgmpgnqhnqhn
qhnqhnqhnqhnqhnqhmpgmpgmpgmpgmpgmpgmpgmpgnqhnqhnqhnqhnqhnqhnqhnqhknejmdilcilchkbh
kbilcilckneloflofmpgnqhorioripsjsvmsvmtwnvypx{ry|sz}t{~ux{ry|sy|sy|sy|sz}tz}tz}tz}
ty|sy|sy|sy|sz}t{~u|\x7fv|\x7fv}.....

接下来的内容与上面显示的结果相关。这些可能是由于我缺乏有关 openCV 的知识(或其他)。尽管如此:

  • 1/我不明白这样一个事实:如果我得到 RGB 图像,我应该有 3 个矩阵,但输出完成.......\x84\x87~'))]。我更多地考虑获得类似的东西[(...),(...),(...\x87~')].
  • 2/这部分有什么特殊含义吗?就像那些是每个矩阵之间的分隔符之类的?

为了更清楚地了解我想要实现的目标,我想处理图像以在每个图像之间进行像素比较。因此,我想知道图像中给定位置的像素值(我假设如果我有 RGB 图像,则给定位置应有 3 个像素值)。

示例:假设我有一个网络摄像头仅在白天指向天空,我想知道与左上角天空部分相对应的位置处的像素值,我发现这些值的串联给出了颜色浅蓝色上面说这张照片是在晴天拍摄的。假设唯一的可能性是晴天带有颜色Light Blue.
接下来,我想将之前的连接与完全相同位置但来自第二天拍摄的照片的像素值的另一个连接进行比较。如果我发现它们不相等,那么我就得出结论,给定的照片是在阴天/雨天拍摄的。如果相等则晴天。

任何有关这方面的帮助将不胜感激。为了更好地理解,我对我的示例进行了庸俗化,但我的目标几乎是相同的。我知道机器学习模型可以实现这些目标,但我很乐意先尝试一下。我的第一个目标是将这一列分成与每个颜色代码相对应的 3 列:红色矩阵、绿色矩阵、蓝色矩阵


我想我有逻辑。我使用 keras.preprocessing.image.img_to_array() 函数来了解值是如何分类的(因为我有一个 RGB 图像,所以我必须有 3 个矩阵:每个颜色 R G B 一个)。如果有人想知道它是如何工作的,我可能是错的,但我认为我有一些东西:

from keras.preprocessing import image
import numpy as np
from PIL import Image

# Using spark built-in data source
first_img = spark.read.format("image").schema(imageSchema).load(".....")
raw = first_img.select("image.data").take(1)[0][0]
np.shape(raw)
(606300,) # which is 470*430*3



# Using keras function
img = image.load_img(".../path/to/img")
yy = image.img_to_array(img)
>>> np.shape(yy)
(430, 470, 3) # the form is good but I have a problem of order since:

>>> raw[0], raw[1], raw[2]
(77, 85, 78)
>>> yy[0][0]
array([78., 85., 77.], dtype=float32)

# Therefore I used the numpy reshape function directly on raw 
# to have 470 matrix of 3 lines and 470 columns:

array = np.reshape(raw, (430,470,3))
xx = image.img_to_array(array)     # OPTIONAL and not used here

>>> array[0][0] == (raw[0],raw[1],raw[2])
array([ True,  True,  True])

>>> array[0][1] == (raw[3],raw[4],raw[5])
array([ True,  True,  True])

>>> array[0][2] == (raw[6],raw[7],raw[8])
array([ True,  True,  True])

>>> array[0][3] == (raw[9],raw[10],raw[11])
array([ True,  True,  True])

因此,如果我理解得很好,spark 会将图像读取为一个大数组 - (606300,) - 实际上每个元素都是有序的并且对应于它们各自的颜色阴影 (R G B)。
经过我的小变换后,我获得了 3 列 x 470 行的 430 矩阵。由于我的图像 (WidthxHeight) 为 (470x430),因此每个矩阵对应于一个像素高度位置,并且每个矩阵内部:每种颜色 3 列,每个宽度位置 470 行。

希望对某人有帮助:)!

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Spark 如何使用图像格式读取我的图像? 的相关文章

  • 用于 C++ 中图像分析的 OpenCV 二进制图像掩模

    我正在尝试分析一些图像 这些图像的外部周围有很多噪声 但内部有一个清晰的圆形中心 中心是我感兴趣的部分 但外部噪声正在影响我对图像的二进制阈值处理 为了忽略噪音 我尝试设置一个已知中心位置和半径的圆形蒙版 从而使该圆之外的所有像素都更改为黑
  • 边缘检测和透明度

    使用在一致背景下拍摄的服装图像 我希望使图像中除服装之外的所有像素都透明 解决这个问题的最佳方法是什么 我研究了这个常见的算法和开源库opencv http opencv willowgarage com wiki 除了自己动手或使用 op
  • 有没有办法检测图像是否模糊? [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我想知道是否有一种方法可以通过分析图像数据来确定图像是否模糊 估计图像清晰度的另一种非常简单的方法是使用拉普拉斯 或 LoG 滤波器并
  • 在 pyspark 中创建一个包含单列元组的数据框

    我有一个 RDD 其中包含以下内容 column 1 value column 2 value column 3 value column 100 value 我想创建一个包含带有元组的单列的数据框 我得到的最接近的是 schema Str
  • 使用 Glue 将数据输入到 AWS Elastic Search

    我正在寻找使用 AWS Glue python 或 pyspark 将数据插入 AWS Elastic Search 的解决方案 我见过用于 Elastic Search 的 Boto3 SDK 但找不到任何将数据插入 Elastic Se
  • PySpark 应用程序因 java.lang.OutOfMemoryError: Java 堆空间而失败

    我通过 pycharm 和 pyspark shell 分别运行 Spark 我已经堆积了这个错误 java lang OutOfMemoryError Java heap space at org apache spark api pyt
  • Python - 将整数或字符串发送到 Spark-Streaming

    我可以通过 CSV 文件发送我的数据 首先 将我的随机数写入CSV文件然后发送 但是可以直接发送吗 我的套接字代码 import socket host localhost port 8080 s socket socket socket
  • 在 python lib 中导入和裁剪 jpeg 的快速方法

    我有一个 python 应用程序 可以导入 200k 图像 裁剪它们 并将裁剪后的图像呈现给 pyzbar 来解释条形码 裁剪很有帮助 因为图像上有多个条形码 并且当给定较小的图像时 pyzbar 可能会更快一些 目前我正在使用 Pillo
  • 如何使用 python 测量骨架长度的想法

    After applying skeletonization http scikit image org docs dev auto examples plot skeleton html on an image 我想使用 python 测
  • Spark 2.1无法在CSV上写入Vector字段

    当我将代码从 Spark 2 0 迁移到 2 1 时 我偶然发现了与 Dataframe 保存相关的问题 这是代码 import org apache spark sql types import org apache spark ml l
  • “imagecolorat”和透明度

    如何才能获得透明度上一个像素的值image imagecolorat 仅选取图像中指定位置的像素颜色索引 通过该索引 我可以获取 RGB 值 但不能获取透明值 希望您理解 并提前感谢您 解决方案可能如下 colorIndex imageco
  • Spark SQL 广播提示中间表

    我在使用广播提示时遇到问题 可能是缺乏 SQL 知识 我有一个查询 例如 SELECT broadcast a FROM a INNER JOIN b ON INNER JOIN c on 我想要做 SELECT broadcast a F
  • 使用 Spark 版本 2.2 的 row_number() 函数创建 PySpark DataFrame 中每行的行号

    我有一个 PySpark DataFrame valuesCol Sweden 31 Norway 62 Iceland 13 Finland 24 Denmark 52 df sqlContext createDataFrame valu
  • Haar训练时正样本和负样本使用多少张图片?

    我已经阅读了大量有关 Haar 训练的内容 但我不清楚应该为正样本集和负样本集使用多少图像 我看到建议使用很多图像 有些人推荐数千张 我也不清楚正负样本图像的数量是否应该相同 这是关于 Haar 训练的最佳教程 你试过这个吗 http no
  • Spark 和 Ipython 中将非数字特征编码为数字的问题

    我正在做一些我必须做出预测的事情numeric数据 每月员工支出 使用non numeric特征 我在用Spark MLlibs Random Forests algorthim 我有我的features数据在一个dataframe看起来像
  • Spark SQL如何读取压缩的csv文件?

    我尝试过使用apispark read csv读取带有扩展名的压缩 csv 文件bz or gzip 有效 但在源代码中我没有找到任何可以声明的选项参数codec type 即使在这个link https github com databr
  • 自动跟踪算法

    我正在尝试写一个simple跟踪例程来跟踪电影中的某些点 本质上我有一系列 100 帧长的电影 在黑暗背景上显示一些亮点 我每帧有大约 100 150 个点 它们在电影的过程中移动 我想跟踪它们 所以我正在寻找一些有效的 但可能不会过度实施
  • 使用 Spark DataFrame 获取组后所有组的 TopN

    我有一个 Spark SQL DataFrame user1 item1 rating1 user1 item2 rating2 user1 item3 rating3 user2 item1 rating4 如何按用户分组然后返回TopN
  • 使用多行选项和编码选项读取 CSV

    在 azure Databricks 中 当我使用以下命令读取 CSV 文件时multiline true and encoding SJIS 似乎编码选项被忽略了 如果我使用multiline选项 Spark 使用默认值encoding那
  • 访问图像的 Windows“标签”元数据字段

    我正在尝试进行一些图像处理 所以现在我正在尝试读取图像 exif 数据 有 2 个内置函数可用于读取图像的 exif 数据 问题是我想读取图像标签 exifread and imfinfo这两个函数都不显示图像标签 Is there any

随机推荐