pythonでclipした画像データのhashを得る
元々やりたかったこととしてはランダムにclipした画像を重複なく保存すること。そのためファイル名として画像データのhashがほしかった。以下のコードでhashを取得できる。
import cv2 import hashlib pos_x , pos_y = <clip領域の左上の座標> width , height = <clip領域の幅と高さ> path = <clipしたい画像のpath> image = cv2.imread(path) image_clipped = image[y:y+h, x:x+w] hash_clipped = hashlib.md5(image_clipped.tobytes()).hexdigest()
画像のロードにはopencvを使ったので、imreadでnumpyの配列が取得できる。md5にはbyte arrayであれば渡せるのでtobytesで変換している。
注意点としては、これで得られるhashは画像のピクセルデータの配列に対するものなので、imwriteなどによってpngやjpgなどとして保存した後の画像ファイルのhashとは異なること。 今回はやりたかったことからしてこのやり方で問題なかったが、保存後のファイルのhashがほしい場合はこれではダメなので注意。