我从Spark哲学开始,在我的例子中是Pyspark。
我有一个学校的小项目要做,看起来不难,但是我已经做了很多天了,我仍然不能成功。
我必须将图像加载到文件夹中并提取描述符以进行降维。
我创建了一个带有图像路径的Pyspark数据框,现在我想添加一个带有描述符的列。
我是这样做的。
图像路径列表:
lst_path = []
sub_folders = os.listdir(folder)
print(sub_folders)
for f in sub_folders[:1]:
lst_categ = os.listdir(folder + f)
for file in lst_categ:
lst_path.append(folder + f + "/" + file)
print("Nombre d'images chargées :", len(lst_path))
rdd = sc.parallelize(lst_path)
row_rdd = rdd.map(lambda x: Row(x))
df = spark.createDataFrame(row_rdd, ["path_img"])
提取描述符的函数:
def get_desc(img):
img = cv2.imread(file)
orb = cv2.ORB_create(nfeatures=50)
keypoints_orb, desc = orb.detectAndCompute(img, None)
desc = desc.flatten()
return desc
udf_image = udf(lambda img: get_desc(img), ArrayType(FloatType()))
新列的创建:
df2 = df.withColumn("img_vectorized", udf_image("path_img"))
printSchema()的结果:
根--path\u img:string(nullable=true)
|--img\u矢量化:数组(nullable=true)
|--元素:浮点(containsnall=true)
当我df2.show()时,我得到以下错误消息:
Py4JJavaError:调用o773时出错。显示字符串:组织。阿帕奇。火花SparkException:作业因阶段失败而中止:阶段18.0中的任务0失败1次,最近的失败:阶段18.0中的任务0.0丢失(TID 93,localhost,executor driver):net。razorvine。泡菜。pickle异常:构造ClassDict(对于numpy.core.multiarray.u重构)需要零参数
AttributeError:“NoneType”对象没有属性“flatte”
我注意到描述符为空。我指定,当我在单行上执行此提取时,它会工作。
我不明白为什么它在我的数据帧上不起作用。你能帮我吗?
谢谢
经过几天的研究,我昨晚找到了解决办法...
我更正的代码:
def get_desc(img):
image = cv2.imread(img)
orb = cv2.ORB_create(nfeatures=50)
keypoints_orb, desc = orb.detectAndCompute(image, None)
if desc is None:
desc = 0
else:
desc = desc.flatten().tolist()
return desc
udf_image = udf(get_desc, ArrayType(IntegerType()))
df_desc = df.withColumn("descriptors", udf_image("path_img"))
df_desc = df_desc.filter(df_desc.descriptors. isNotNull())
df_desc.show()
+--------------------+--------------------+
| path_img| descriptors|
+--------------------+--------------------+
|Training/Apple-Br...|[69, 113, 253, 10...|
|Training/Apple-Br...|[212, 236, 159, 2...|
|Training/Apple-Br...|[60, 53, 123, 239...|
|Training/Apple-Br...|[255, 189, 252, 1...|
|Training/Apple-Br...|[204, 244, 149, 1...|
+--------------------+--------------------+
问题内容: 我认为这个问题更多是“编码风格”,而不是技术问题。 说我有一行代码: 文件描述符会自动关闭还是留在内存中?如果文件描述符未关闭,则首选的关闭方式是什么? 问题答案: 如果将文件对象分配给变量,则可以使用来显式关闭它 另外,(也通常是首选),您可以使用Python文档中提到的关键字(Python 2.5及更高版本): 在处理文件对象时,最好使用关键字。这样做的好处 是 ,即使在执行过程中
这是我第一次使用Yoast搜索引擎优化插件在我的网站,我正在尝试添加元描述到每一个网页和每一个帖子在我的网站。 当我在谷歌上搜索时,似乎元描述根本没有显示出来,相反谷歌将网站页面上的内容作为元描述。 当我查看页面源代码时,我在Yoast SEO中设置了一个内容作为我的元描述 这是我的网站 sunlitex.co.id/en/ 我也有一个问题的元描述模板从插件页面,我只是留空还是应该添加一些变量?
我正在尝试使用这里提供的jirarestapihttps://developer.atlassian.com/server/jira/platform/rest-apis/我正试图弄清楚如何在我的项目中得到对具体问题的描述。 当我做以下查询时: curl-D--u user:password-X GET-H“内容类型:application/json”http://localhost/jira/r
我正试图从IP摄像机实时捕捉图像。该流在VLC中工作得非常好,但是OpenCV的似乎混淆并损坏了传入的图像,以至于无法识别。 同样,从文件捕获工作很好,但不是实时流。如果它有不同,我使用rtsp连接URL;我也尝试了两个不同型号的相机(不同品牌),问题仍然存在。 此外,(我假设)编解码器正在输出以下几种错误:和。 我能做什么?
我想让t0设置一个变量,让agent random得到一个介于1-10之间的数字(以后用这个数字来过滤人),但是我怎么设置随机变量的公式呢?我使用random.next Int(1)+5;但是错误表示:无法对来自类型random的非静态方法next Int(Int)进行静态引用。你能帮帮我吗?非常紧急
得到Maven问题,下面是我得到的问题: [错误]插件org.apache.maven.plugins:maven-resources-Plugin:2.6或其依赖项无法解析: 未能读取org.apache.maven.Plugin:maven-resources-Plugin:jar:2.6: 无法将工件org.apache.maven.Plugin:2.6从/传输到central(https: