simple focus. maybe should std size, and contrast
This commit is contained in:
@@ -58,7 +58,7 @@ def createdb(sqlfile):
|
|||||||
conn.text_factory=str
|
conn.text_factory=str
|
||||||
db.execute('CREATE TABLE list (id INTEGER PRIMARY KEY AUTOINCREMENT,\
|
db.execute('CREATE TABLE list (id INTEGER PRIMARY KEY AUTOINCREMENT,\
|
||||||
file TEXT,date INTEGER,portrait NUMERIC, hash TEXT,\
|
file TEXT,date INTEGER,portrait NUMERIC, hash TEXT,\
|
||||||
width INTEGER,height INTEGER,fingerprint TEXT,\
|
width INTEGER,height INTEGER,fingerprint TEXT,sharpness NUMERIC,\
|
||||||
R REAL,G REAL, B REAL, BR REAL, BG REAL, BB REAL)')
|
R REAL,G REAL, B REAL, BR REAL, BG REAL, BB REAL)')
|
||||||
conn.commit()
|
conn.commit()
|
||||||
return
|
return
|
||||||
@@ -216,12 +216,18 @@ def append_colors(sqlfile):
|
|||||||
dbh=conn.cursor()
|
dbh=conn.cursor()
|
||||||
db.execute("SELECT file,R FROM list WHERE R IS NULL ORDER BY file")
|
db.execute("SELECT file,R FROM list WHERE R IS NULL ORDER BY file")
|
||||||
i=0
|
i=0
|
||||||
|
dirname_old=""
|
||||||
for row in db:
|
for row in db:
|
||||||
colors=get_colors(row[0])
|
colors=get_colors(row[0])
|
||||||
dbh.execute("UPDATE list SET R=?, G=?, B=?, BR=?, BG=?, BB=? \
|
dbh.execute("UPDATE list SET R=?, G=?, B=?, BR=?, BG=?, BB=? \
|
||||||
WHERE file=?",(colors[0][0],colors[0][1],colors[0][2],
|
WHERE file=?",(colors[0][0],colors[0][1],colors[0][2],
|
||||||
colors[1][0],colors[1][1],colors[1][2],row[0]))
|
colors[1][0],colors[1][1],colors[1][2],row[0]))
|
||||||
print "colors: %(f)s (%(r)s %(g)s %(b)s)" % {'f':row[0], 'r':colors[0][0],
|
filename=" "+os.path.basename(row[0])
|
||||||
|
dirname=os.path.dirname(row[0])
|
||||||
|
if dirname!=dirname_old:
|
||||||
|
dirname_old=dirname
|
||||||
|
filename=row[0]
|
||||||
|
print "colors: %(f)s (%(r)s %(g)s %(b)s)" % {'f':filename, 'r':colors[0][0],
|
||||||
'g':colors[0][1], 'b':colors[0][2]}
|
'g':colors[0][1], 'b':colors[0][2]}
|
||||||
i+=1
|
i+=1
|
||||||
if (i%50==0):
|
if (i%50==0):
|
||||||
@@ -270,12 +276,18 @@ def append_fingerprints(sqlfile):
|
|||||||
dbh=conn.cursor()
|
dbh=conn.cursor()
|
||||||
db.execute("SELECT file FROM list WHERE fingerprint IS NULL ORDER BY file")
|
db.execute("SELECT file FROM list WHERE fingerprint IS NULL ORDER BY file")
|
||||||
i=0
|
i=0
|
||||||
|
dirname_old=""
|
||||||
for row in db:
|
for row in db:
|
||||||
fp=get_fingerprint(row[0])
|
fp=get_fingerprint(row[0])
|
||||||
dbh.execute("UPDATE list SET fingerprint=? \
|
dbh.execute("UPDATE list SET fingerprint=? \
|
||||||
WHERE file=?",(fp,row[0]))
|
WHERE file=?",(fp,row[0]))
|
||||||
print " %(f)s" % {'f':row[0]}
|
filename=" "+os.path.basename(row[0])
|
||||||
|
dirname=os.path.dirname(row[0])
|
||||||
|
if dirname!=dirname_old:
|
||||||
|
dirname_old=dirname
|
||||||
|
filename=row[0]
|
||||||
i+=1
|
i+=1
|
||||||
|
print "%(nr)i %(f)s" % {'f':filename, 'nr':i}
|
||||||
if (i%50==0):
|
if (i%50==0):
|
||||||
conn.commit();
|
conn.commit();
|
||||||
conn.commit()
|
conn.commit()
|
||||||
@@ -333,14 +345,16 @@ def find_fingerprint_nearest(sqlfile,cmp):
|
|||||||
conn.text_factory=str
|
conn.text_factory=str
|
||||||
db1=conn.cursor()
|
db1=conn.cursor()
|
||||||
if is_listed(db1, cmp):
|
if is_listed(db1, cmp):
|
||||||
db1.execute("SELECT file,fingerprint,width,height FROM list WHERE file=?",(cmp,))
|
db1.execute("SELECT file,fingerprint,sharpness,width,height FROM list WHERE file=?",(cmp,))
|
||||||
for hit1 in db1:
|
for hit1 in db1:
|
||||||
fp=int(hit1[1])
|
fp=int(hit1[1])
|
||||||
|
sp=hit1[2]
|
||||||
else:
|
else:
|
||||||
fp=int(get_fingerprint(cmp))
|
fp=int(get_fingerprint(cmp))
|
||||||
|
sp=get_sharpness(cmp)
|
||||||
db1.execute("SELECT file,fingerprint,width,height FROM list ORDER BY file")
|
print('"%s":0:%f' % (cmp, sp))
|
||||||
this=['',sys.maxint]
|
db1.execute("SELECT file,fingerprint,sharpness,width,height FROM list ORDER BY file")
|
||||||
|
this=['',sys.maxint,0]
|
||||||
for i,hit1 in enumerate(db1):
|
for i,hit1 in enumerate(db1):
|
||||||
if hit1[0] == cmp:
|
if hit1[0] == cmp:
|
||||||
continue
|
continue
|
||||||
@@ -348,7 +362,42 @@ def find_fingerprint_nearest(sqlfile,cmp):
|
|||||||
if similarity<this[1]:
|
if similarity<this[1]:
|
||||||
this[1]=similarity
|
this[1]=similarity
|
||||||
this[0]=hit1[0]
|
this[0]=hit1[0]
|
||||||
print('"%s":%i' % (this[0], this[1]))
|
this[2]=hit1[2]
|
||||||
|
|
||||||
|
print('"%s":%i:%f' % (this[0], this[1], this[2]))
|
||||||
|
|
||||||
|
def append_sharpness(sqlfile):
|
||||||
|
conn=sqlite3.connect(sqlfile)
|
||||||
|
conn.text_factory=str
|
||||||
|
db=conn.cursor()
|
||||||
|
dbh=conn.cursor()
|
||||||
|
db.execute("SELECT file FROM list WHERE sharpness IS NULL ORDER BY file")
|
||||||
|
i=0
|
||||||
|
dirname_old=""
|
||||||
|
for row in db:
|
||||||
|
sp=get_sharpness(row[0])
|
||||||
|
dbh.execute("UPDATE list SET sharpness=? \
|
||||||
|
WHERE file=?",(sp,row[0]))
|
||||||
|
filename=" "+os.path.basename(row[0])
|
||||||
|
dirname=os.path.dirname(row[0])
|
||||||
|
if dirname!=dirname_old:
|
||||||
|
dirname_old=dirname
|
||||||
|
filename=row[0]
|
||||||
|
i+=1
|
||||||
|
print "%(nr)i %(f)s %(s)f" % {'f':filename, 'nr':i,'s':sp}
|
||||||
|
if (i%50==0):
|
||||||
|
conn.commit();
|
||||||
|
conn.commit()
|
||||||
|
|
||||||
|
def get_sharpness(filename):
|
||||||
|
small_args="convert ( -colorspace gray XXX ( +clone -roll +0+1 ) -compose Difference -composite -shave 1x1 ) \
|
||||||
|
( -colorspace gray XXX ( +clone -roll +1+0 ) -compose Difference -composite -shave 1x1 ) \
|
||||||
|
-compose Plus -composite -format %[fx:mean*1000] info:".split(" ")
|
||||||
|
small_args[4]=filename+'[0]'
|
||||||
|
small_args[19]=filename+'[0]'
|
||||||
|
p=subprocess.Popen(small_args,stdout=subprocess.PIPE)
|
||||||
|
sharpness, err = p.communicate()
|
||||||
|
return float(sharpness.strip())
|
||||||
|
|
||||||
def searchdb(sqlfile,needle):
|
def searchdb(sqlfile,needle):
|
||||||
conn=sqlite3.connect(sqlfile)
|
conn=sqlite3.connect(sqlfile)
|
||||||
@@ -468,10 +517,12 @@ def main():
|
|||||||
if options.search:
|
if options.search:
|
||||||
print_structure(searchdb(options.sqlfile,options.search))
|
print_structure(searchdb(options.sqlfile,options.search))
|
||||||
if options.measure:
|
if options.measure:
|
||||||
print('Adding colors...')
|
print('Measure colors...')
|
||||||
append_colors(options.sqlfile)
|
append_colors(options.sqlfile)
|
||||||
print('Adding fingerprints...')
|
print('Measure fingerprints...')
|
||||||
append_fingerprints(options.sqlfile)
|
append_fingerprints(options.sqlfile)
|
||||||
|
#print('Measure sharpness...')
|
||||||
|
#append_sharpness(options.sqlfile)
|
||||||
if options.random:
|
if options.random:
|
||||||
print('Random lists...')
|
print('Random lists...')
|
||||||
random_lists(options.sqlfile)
|
random_lists(options.sqlfile)
|
||||||
|
|||||||
Reference in New Issue
Block a user