我用tar-to-seq.jar从充满图像的 tar 文件创建了序列文件。现在我想用该序列文件的字节创建图像并分析它们。我使用的是 opencv 3.0.0 和 mrjob 0.5 版本。
我无法使用 cv2.imdecode() 方法读取图像并且我得到空值
from mrjob.job import MRJob
import os
import sys
import cv2
import numpy as np
class CountLavander(MRJob):
HADOOP_INPUT_FORMAT = 'org.apache.hadoop.mapred.SequenceFileAsTextInputFormat'
def mapper(self, key, value):
imgbytes = np.fromstring(value,dtype='uint8')
imarr = cv2.imdecode(imgbytes, cv2.IMREAD_COLOR)
yield imarr,1
def reducer(self, key, values):
yield key, sum(values)
if __name__ == '__main__':
CountLavander.run()
运行此操作的结果是:
python count_lavander.py -r hadoop --hadoop-bin /usr/bin/hadoop
--hadoop-streaming-jar /usr/hdp/2.2.8.0-3150/hadoop-mapreduce/hadoop-
streaming-2.6.0.2.2.8.0-3150.jar
--interpreter /usr/local/bin/python2.7 cor_data.seq
我越来越:
null 2731
我在该序列文件中打包了 2731 个图像,所以我猜它打包得很好,但不知何故我无法将它们作为图像读取。有人有什么想法吗?