2017-07-27 8 views
-1

私はValueError: invalid literal for int() with base 10: '.DS'エラーがあります。私は一日の解決策を探していますが、解決できませんでした。私のディレクトリは空ではありません。私はOpenCVを使ってfacerecognizerを訓練しようとしています。私はtrainディレクトリから顔の写真を取得しようとしていますが、私はできません。私のコードPython OpenCVリテラルエラーが無効

:電車の中で

images = [] 
labels = [] 
for file in os.listdir('train/'): 
    image = cv2.imread('train/'+file, 0) 
    images.append(image) 
    labels.append(int(file.split('_')[0])) 

写真に名前が付いているので上の1_001.pmg、1_002.pmgとあります。私は愚かな問題のためにあなたの助けを求めています。ありがとう!

ps。あなたが必要とする、このコードはここで@Fabianの答えhow to notify user if there are common faces detected between two directories with python and opencv

+0

受信したスタックトレースからは正確には何か分かりませんか?私には明らかに聞こえますが、 '.DS'はintに変換できません。あなたのコードでは、 'for'ループの最後の行を変換する場所が1つしかありません。ドットが付いたファイル名は、ほとんどの '* nix'システムで_hidden_​​ファイルに分類されています。 –

+0

返信いただきありがとうございます。faceRecognition.train関数がそのように必要なので、整数として必要です。だから私はそれを整数に変換しなければならない – boyaronur

答えて

0

それはあなたに隠すことができる指定されたディレクトリ内のすべてのファイルのリストを返すような問題は、os.listdir('train/')であるからである、と'.DS_Store'は、それらのファイルの中にもあります戻り値の文字列が.pngであるかどうかを確認してから、cv::imreadに渡します。

images = [] 
labels = [] 
for file_name in os.listdir('train/'): 
    if file_name.endswith(".png"): 
     image = cv2.imread('train/'+file_name, 0) 
     images.append(image) 
     labels.append(int(file_name.split('_')[0])) 
関連する問題