使用Apache Spark和OpenCV进行图像分析

3

我希望对大量的图片(数千张)进行图像分析,并尝试使用Spark来加速处理。为了测试目的,我正在使用docker组合在本地设置一个独立的集群。

我希望进行一些基本的分析,如计算梯度、边缘检测等。我可以成功地使用以下方法将我的图像加载到数据框中:

images = spark.read.format("image").option("dropInvalid", True).load("/opt/spark-data/")

我试图使用UDF调用OpenCV函数,例如Sobel函数。但我无法将图像数据加载到OpenCV可以处理的格式中。
有没有办法以一种方式转换图像数据,使我能够使用OpenCV函数?还是有比使用OpenCV更好的方法吗?
1个回答

1

我能够通过这篇帖子得到帮助,使这项工作得以实现。

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)) )

谢谢!这正是我在寻找的。我进一步简化了函数以泛化i:import numpy as np import cv2def convertImageGeneric( image,color_scheme=cv2.COLOR_BGR2RGB): return cv2.cvtColor( np.reshape(image.data, (image.height, image.width, image.nChannels)),color_scheme ) - Nasgar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接