diff --git a/python/camera_filters.py b/python/camera_filters.py new file mode 100755 index 0000000..0abf34a --- /dev/null +++ b/python/camera_filters.py @@ -0,0 +1,97 @@ +#!/usr/bin/python + +# License Agreement +# 3-clause BSD License +# +# Copyright (C) 2018, Xperience.AI, all rights reserved. +# +# Third party copyrights are property of their respective owners. +# +# Redistribution and use in source and binary forms, with or without modification, +# are permitted provided that the following conditions are met: +# +# * Redistributions of source code must retain the above copyright notice, +# this list of conditions and the following disclaimer. +# +# * Redistributions in binary form must reproduce the above copyright notice, +# this list of conditions and the following disclaimer in the documentation +# and/or other materials provided with the distribution. +# +# * Neither the names of the copyright holders nor the names of the contributors +# may be used to endorse or promote products derived from this software +# without specific prior written permission. +# +# This software is provided by the copyright holders and contributors "as is" and +# any express or implied warranties, including, but not limited to, the implied +# warranties of merchantability and fitness for a particular purpose are disclaimed. +# In no event shall copyright holders or contributors be liable for any direct, +# indirect, incidental, special, exemplary, or consequential damages +# (including, but not limited to, procurement of substitute goods or services; +# loss of use, data, or profits; or business interruption) however caused +# and on any theory of liability, whether in contract, strict liability, +# or tort (including negligence or otherwise) arising in any way out of +# the use of this software, even if advised of the possibility of such damage. + +import cv2 +import sys +import numpy + +PREVIEW = 0 # Preview Mode +BLUR = 1 # Blurring Filter +FEATURES = 2 # Corner Feature Detector +CANNY = 3 # Canny Edge Detector + +feature_params = dict( maxCorners = 500, + qualityLevel = 0.2, + minDistance = 15, + blockSize = 9) +s = 0 +if len(sys.argv) > 1: + s = sys.argv[1] + +image_filter = PREVIEW +alive = True + +win_name = 'Camera Filters' +cv2.namedWindow(win_name, cv2.WINDOW_NORMAL) +result = None + +source = cv2.VideoCapture(s) + +while alive: + has_frame, frame = source.read() + if not has_frame: + break + + frame = cv2.flip(frame,1) + + if image_filter == PREVIEW: + result = frame + elif image_filter == CANNY: + result = cv2.Canny(frame, 80, 150) + elif image_filter == BLUR: + result = cv2.blur(frame, (13,13)) + elif image_filter == FEATURES: + result = frame + frame_gray = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY) + corners = cv2.goodFeaturesToTrack(frame_gray, **feature_params) + if corners is not None: + for x, y in numpy.float32(corners).reshape(-1, 2): + cv2.circle(result, (x,y), 10, (0, 255 , 0), 1) + + cv2.imshow(win_name, result) + + key = cv2.waitKey(1) + if key == ord('Q') or key == ord('q') or key == 27: + alive = False + elif key == ord('C') or key == ord('c'): + image_filter = CANNY + elif key == ord('B') or key == ord('b'): + image_filter = BLUR + elif key == ord('F') or key == ord('f'): + image_filter = FEATURES + elif key == ord('P') or key == ord('p'): + image_filter = PREVIEW + +source.release() +cv2.destroyWindow(win_name)