Import image
Def make_regalur_image (IMG, size = (256,256 )):
Return IMG. Resize (size). Convert ('rgb ')
Def split_image (IMG, part_size = (64, 64 )):
W, H = IMG. Size
PW, pH = part_size
Assert w % PW = H % pH = 0
Return [img. Crop (I, j, I + PW, J + pH). Copy ()\
For I in xrange (0, W, PW )\
For J in xrange (0, h, pH)]
Def hist_similar (LH, RH ):
Assert Len (LH) = Len (RH)
Return sum (1-(0 if l = r else float (ABS (l-R)/max (L, R) for L, R in zip (LH, RH)/Len (LH)
Def calc_similar (Li, RI ):
# Return hist_similar (Li. histogram (), Ri. histogram ())
Return sum (hist_similar (L. histogram (), R. histogram () for L, R in zip (split_image (LI), split_image (RI)/16.0
Def calc_similar_by_path (LF, RF ):
Li, rI = make_regalur_image (image. Open (LF), make_regalur_image (image. Open (RF ))
Return calc_similar (Li, RI)
Def make_doc_data (LF, RF ):
Li, rI = make_regalur_image (image. Open (LF), make_regalur_image (image. Open (RF ))
Li. Save (LF + '_regalur.png ')
Ri. Save (RF + '_regalur.png ')
FD = open('stat.csv ', 'w ')
FD. write ('\ n '. join (L + ',' + R for L, R in zip (MAP (STR, Li. histogram (), map (STR, Ri. histogram ()))))
# Print> FD, '\ N'
# FD. Write (','. Join (MAP (STR, Ri. histogram ())))
FD. Close ()
Import imagedraw
Li = Li. Convert ('rgb ')
Draw = imagedraw. Draw (Li)
For I in xrange (0,256, 64 ):
Draw. Line (0, I, 256, I), fill = '# ff0000 ')
Draw. Line (I, 0, I, 256), fill = '# ff0000 ')
Li. Save (LF + '_lines.png ')
If _ name _ = '_ main __':
Path = r 'd: \ Android-SDK \ tools \ hui800 \ getimage \ test % d \ % d.png'
For I in xrange (1, 7 ):
Print 'test _ case _ % d: %. 3f % '% (I ,\
Calc_similar_by_path ('d :\\ Android \ Android-SDK \ tools \ hui800 \ getimage \ test % d \ % d.png '% (I, 1 ),\
'D: \ Android-SDK \ tools \ hui800 \ getimage \ test % d \ % d.png '% (I, 2) * 100)
For image comparison, refer to the following articles:
Http://blog.csdn.net/lanphaday/article/details/2325027
#! /Usr/bin/Python
#-*-Coding: UTF-8 -*-
Import image
Def make_regalur_image (IMG, size = (256,256 )):
Return IMG. Resize (size). Convert ('rgb ')
Def split_image (IMG, part_size = (64, 64 )):
W, H = IMG. Size
PW, pH = part_size
Assert w % PW = H % pH = 0
Return [img. Crop (I, j, I + PW, J + pH). Copy ()\
For I in xrange (0, W, PW )\
For J in xrange (0, h, pH)]
Def hist_similar (LH, RH ):
Assert Len (LH) = Len (RH)
Return sum (1-(0 if l = r else float (ABS (l-R)/max (L, R) for L, R in zip (LH, RH)/Len (LH)
Def calc_similar (Li, RI ):
# Return hist_similar (Li. histogram (), Ri. histogram ())
Return sum (hist_similar (L. histogram (), R. histogram () for L, R in zip (split_image (LI), split_image (RI)/16.0
Def calc_similar_by_path (LF, RF ):
Li, rI = make_regalur_image (image. Open (LF), make_regalur_image (image. Open (RF ))
Return calc_similar (Li, RI)
Def make_doc_data (LF, RF ):
Li, rI = make_regalur_image (image. Open (LF), make_regalur_image (image. Open (RF ))
Li. Save (LF + '_regalur.png ')
Ri. Save (RF + '_regalur.png ')
FD = open('stat.csv ', 'w ')
FD. write ('\ n '. join (L + ',' + R for L, R in zip (MAP (STR, Li. histogram (), map (STR, Ri. histogram ()))))
# Print> FD, '\ N'
# FD. Write (','. Join (MAP (STR, Ri. histogram ())))
FD. Close ()
Import imagedraw
Li = Li. Convert ('rgb ')
Draw = imagedraw. Draw (Li)
For I in xrange (0,256, 64 ):
Draw. Line (0, I, 256, I), fill = '# ff0000 ')
Draw. Line (I, 0, I, 256), fill = '# ff0000 ')
Li. Save (LF + '_lines.png ')
If _ name _ = '_ main __':
Path = r 'test/test % d/% d. jpg'
For I in xrange (1, 7 ):
Print 'test _ case _ % d: %. 3f % '% (I ,\
Calc_similar_by_path ('test/test % d/% d. JPG '% (I, 1), 'test/test % d/% d. JPG '% (I, 2) * 100)
# Make_doc_data ('test/test4/1. jpg ', 'test/test4/2. jpg ')