我想做一些图像分析,对大量的图像(千),我想尝试使用火花,以加快这一点。为了测试目的,我正在使用docker在本地设置一个独立的集群。
我想做一些基本分析,如计算梯度、边缘检测等。我可以使用以下方法成功地将图像加载到数据帧中:
images = spark.read.format("image").option("dropInvalid", True).load("/opt/spark-data/")我尝试使用udf调用OpenCV函数,比如Sobel。但我无法将图像数据加载到OpenCV可以使用的格式中。
有什么方法可以将图像数据转换成可以使用OpenCV函数的方式吗?或者,是否有比使用OpenCV更好的方法来做到这一点?
发布于 2022-08-11 19:57:11
我能够在这个post的帮助下完成这项工作。
def convertImageGeneric( image, fa , down_width = 500, down_height = 500):
import numpy as np
import cv2
fa = cv2.SIFT_create(400)
cv2_image = cv2.cvtColor(
np.reshape(image.data, (image.height, image.width, image.nChannels)), # this handles the image conversion
cv2.COLOR_BGR2GRAY
)
preds = fa.detect( image , None )
return (image.origin, Vectors.dense(no_more_numpy(preds)) )https://stackoverflow.com/questions/57077418
复制相似问题