1

tar-to-seq.jar を使用して、画像でいっぱいの tar ファイルからシーケンス ファイルを作成しました。今度は、そのシーケンス ファイルからバイトから画像を作成し、それらを分析したいと考えています。私はopencv 3.0.0とmrjob 0.5バージョンを使用しています。

cv2.imdecode() メソッドを使用して画像を読み取るのに問題があり、null 値を取得しています

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個の画像を詰め込んだので、うまく詰め込まれていると思いますが、どういうわけか画像として読み取ることができません。誰でも何か考えがありますか?

4

0 に答える 0