Add debug script
parent
ae83972f80
commit
4b3e7fb6f6
|
|
@ -0,0 +1,69 @@
|
|||
"""
|
||||
usage: python plot_intensity.py file.png threshold
|
||||
|
||||
plots sum of pixel intensities on both axes for an image.
|
||||
"""
|
||||
import sys
|
||||
import time
|
||||
from itertools import groupby
|
||||
from operator import itemgetter
|
||||
|
||||
import cv2
|
||||
import numpy as np
|
||||
import matplotlib.pyplot as plt
|
||||
from pylab import barh
|
||||
|
||||
|
||||
def timeit(func):
|
||||
def timed(*args, **kw):
|
||||
start = time.time()
|
||||
result = func(*args, **kw)
|
||||
end = time.time()
|
||||
print 'Function: %r took: %2.4f seconds' % (func.__name__, end - start)
|
||||
return result
|
||||
return timed
|
||||
|
||||
|
||||
def plot_barchart(ar):
|
||||
n = len(ar)
|
||||
ind = np.arange(n)
|
||||
width = 0.35
|
||||
plt.bar(ind, ar, width, color='r', zorder=1)
|
||||
plt.show()
|
||||
|
||||
|
||||
def merge_lines(lines):
|
||||
ranges = []
|
||||
for k, g in groupby(enumerate(lines), lambda (i, x): i-x):
|
||||
group = map(itemgetter(1), g)
|
||||
ranges.append((group[0], group[-1]))
|
||||
merged = []
|
||||
for r in ranges:
|
||||
merged.append((r[0] + r[1]) / 2)
|
||||
return merged
|
||||
|
||||
|
||||
def plot_lines(image, lines):
|
||||
for y in lines:
|
||||
plt.plot([0, image.shape[1]], [y, y])
|
||||
plt.imshow(image)
|
||||
plt.show()
|
||||
|
||||
|
||||
@timeit
|
||||
def main():
|
||||
image = cv2.imread(sys.argv[1])
|
||||
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
|
||||
threshold = cv2.adaptiveThreshold(np.invert(gray), 255, cv2.ADAPTIVE_THRESH_GAUSSIAN_C, cv2.THRESH_BINARY, 15, -2)
|
||||
y_proj = np.sum(threshold, axis=1)
|
||||
line_threshold = int(sys.argv[2])
|
||||
lines = np.where(y_proj < line_threshold)[0]
|
||||
lines = merge_lines(lines)
|
||||
plot_lines(image, lines)
|
||||
|
||||
|
||||
if __name__ == '__main__':
|
||||
if len(sys.argv) == 1:
|
||||
print __doc__
|
||||
else:
|
||||
main()
|
||||
Loading…
Reference in New Issue