aboutsummaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
-rw-r--r--README.md52
-rw-r--r--bin/box_blur.py12
-rw-r--r--bin/gaussian_blur.py15
-rw-r--r--bin/shift.py19
4 files changed, 68 insertions, 30 deletions
diff --git a/README.md b/README.md
index 77c5f87..b57a9b9 100644
--- a/README.md
+++ b/README.md
@@ -7,27 +7,59 @@ matrices.
Prerequisites
-------------
-Python 3.4 or higher is required.
-Additionally, [OpenCV]'s Python bindings are used for image manipulation.
-Please note that [NumPy] is also required as a transitive dependency.
+* Python 3.4 or higher
+* [numpy]
+* [opencv-python]
+
The versions below have been verified to work properly.
| Software | Version |
| ------------- | ------- |
-| Python | 3.5.1 |
+| CPython | 3.5.1 |
| numpy | 1.11.0 |
| opencv-python | 3.1.0 |
-[NumPy]: http://www.numpy.org/
-[OpenCV]: http://opencv.org/
+[numpy]: http://www.numpy.org/
+[opencv-python]: http://opencv.org/
+
+Windows binaries for CPython can be acquired at
+http://www.lfd.uci.edu/~gohlke/pythonlibs/.
-Windows binaries of the required packages for CPython can be acquired at the
-usual place: http://www.lfd.uci.edu/~gohlke/pythonlibs/.
-Please note that OpenCV's Python bindings require [Visual C++ Redistributable
-for Visual Studio 2015] to be installed on Windows.
+OpenCV's Python bindings require [Visual C++ Redistributable for Visual Studio
+2015] on Windows.
[Visual C++ Redistributable for Visual Studio 2015]: https://www.microsoft.com/en-us/download/details.aspx?id=48145
+Usage
+-----
+
+Run the scripts from the top-level directory using `python -m`.
+Pass the `--help` flag to a script to examine its detailed usage information.
+
+For example (using Windows path format):
+
+ > python -m bin.box_blur img\Lenna.png --radius 3
+
+The complete list of usable scripts is given below.
+
+* box_blur.py — Apply box blur to an image.
+* gaussian_blur.py — Apply Gaussian blur to an image.
+* shift.py — Shift an image by a few pixels in a specified direction.
+
+Linting
+-------
+
+Requires [PyLint].
+Run from the top-level directory:
+
+ > pylint filters
+ ...
+
+ > pylint bin
+ ...
+
+[PyLint]: https://www.pylint.org/
+
License
-------
diff --git a/bin/box_blur.py b/bin/box_blur.py
index 9d5d1cd..d570f5a 100644
--- a/bin/box_blur.py
+++ b/bin/box_blur.py
@@ -22,13 +22,15 @@ def _main_box_blur(img_path, radius=DEFAULT_RADIUS, output_path=None):
image.save(output_path, output)
def _parse_args(args=sys.argv):
- parser = argparse.ArgumentParser()
- parser.add_argument('img_path')
- parser.add_argument('--output', '-o',
- dest='output_path', default=None)
+ parser = argparse.ArgumentParser(
+ description='Apply box blur to an image.')
+ parser.add_argument('img_path', help='source image file path')
+ parser.add_argument('--output', '-o', dest='output_path', default=None,
+ help='save new image to a file')
parser.add_argument('--radius', '-r',
type=cmd_line.parse_non_negative_integer,
- default=DEFAULT_RADIUS)
+ default=DEFAULT_RADIUS,
+ help='specify convolution kernel radius')
return parser.parse_args(args[1:])
def _main(args=sys.argv):
diff --git a/bin/gaussian_blur.py b/bin/gaussian_blur.py
index d530547..c2aa79a 100644
--- a/bin/gaussian_blur.py
+++ b/bin/gaussian_blur.py
@@ -26,15 +26,18 @@ def _main_gaussian_blur(
image.save(output_path, output)
def _parse_args(args=sys.argv):
- parser = argparse.ArgumentParser()
- parser.add_argument('img_path')
- parser.add_argument('--output', '-o',
- dest='output_path', default=None)
+ parser = argparse.ArgumentParser(
+ description='Apply Gaussian blur to an image.')
+ parser.add_argument('img_path', help='source image file path')
+ parser.add_argument('--output', '-o', dest='output_path', default=None,
+ help='save new image to a file')
parser.add_argument('--sigma', '-s',
- type=float, default=DEFAULT_SIGMA)
+ type=float, default=DEFAULT_SIGMA,
+ help='specify the sigma coefficient in the Gaussian formula')
parser.add_argument('--radius', '-r',
type=cmd_line.parse_non_negative_integer,
- default=DEFAULT_RADIUS)
+ default=DEFAULT_RADIUS,
+ help='specify convolution kernel radius')
return parser.parse_args(args[1:])
def _main(args=sys.argv):
diff --git a/bin/shift.py b/bin/shift.py
index 8dfd76a..94db333 100644
--- a/bin/shift.py
+++ b/bin/shift.py
@@ -32,17 +32,18 @@ def _parse_direction(s):
raise argparse.ArgumentTypeError('invalid direction: ' + s)
def _parse_args(args=sys.argv):
- parser = argparse.ArgumentParser()
- parser.add_argument('img_path')
- parser.add_argument('--output', '-o',
- dest='output_path', default=None)
- parser.add_argument('--direction', '-d',
- type=_parse_direction,
- choices=Direction,
- default=DEFAULT_DIRECTION)
+ parser = argparse.ArgumentParser(
+ description='Shift an image by a few pixels in a specified direction.')
+ parser.add_argument('img_path', help='source image file path')
+ parser.add_argument('--output', '-o', dest='output_path', default=None,
+ help='save new image to a file')
+ parser.add_argument('--direction', '-d', choices=Direction,
+ type=_parse_direction, default=DEFAULT_DIRECTION,
+ help='specify shifting direction')
parser.add_argument('--distance', '-n',
type=cmd_line.parse_non_negative_integer,
- default=DEFAULT_DISTANCE)
+ default=DEFAULT_DISTANCE,
+ help='specify shift size (in pixels)')
return parser.parse_args(args[1:])
def _main(args=sys.argv):