フォルダ内の隣の画像が同じ画像か比較するコードを作成したのですが、Cドライブのフォルダで実行すると、desktop.iniと表示されます。Dドライブのフォルダで実行しても表示されません。何か問題のあることではないと思うのですが、不思議です。どういうことなのでしょうか?
文字化けしていますが、同じ画像があった場合にファイル名を表示しています。
python
1import os, cv2, sys, numpy as np 2 3folder = r"D:\新しいフォルダー" 4files = os.listdir(folder) 5 6# cv2.imreadの代替え 7def imread(filename, flags=cv2.IMREAD_COLOR, dtype=np.uint8): 8 try: 9 n = np.fromfile(filename, dtype) 10 img = cv2.imdecode(n, flags) 11 return img 12 except Exception as e: 13 print(e) 14 return None 15 16# 隣り合った画像を比較 17for i,file in enumerate(files): 18 gazou1 = imread(os.path.join(folder, file)) 19 hikaku1 = cv2.calcHist([gazou1], [0], None, [256], [0, 256]) 20 try: 21 gazou2 = imread(os.path.join(folder, files[i+1])) 22 hikaku2 = cv2.calcHist([gazou2], [0], None, [256], [0, 256]) 23 except: 24 print(file, "fin") 25 sys.exit() 26 27 result = cv2.compareHist(hikaku1, hikaku2, 0) 28 if result == 1.0: 29 print(file) 30
cv2.imreadは日本語のファイル、フォルダ名非対応らしく、代替え案としてオリジナルの関数[imread]がネットで紹介されていました。コードはざっくりとしか理解していません。
cv2.imdecode(n, flags)は圧縮されたメモリ上の画像を復元する機能らしいのですが、コードを実行することで画像が劣化していくということがあるのでしょうか?
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/08/11 05:52
2018/08/11 10:02