This repository is intended for learning, research and experimentation in the field of computer vision using Opencv, but it can still be extended to other fields.
1 - Main Branch
The main branch is an integration branch where bug/feature fixes are collected for functional testing.
2 - Release Branch
The release branch is where releases are maintained and hot fixes (with names like release/v2.x.x) are added. Please ensure that all your production-related work are tracked with the release branches.
With this new model, we can push out bug fixes more quickly and achieve simpler maintenance.
3 - Your own Branch For your own testing, you can create your own branch as a sandbox. If you notice a noticeable change that does not break the main system, you can send a pull request.
For the learning curve here is a plan to follow first have a good understanding of the *NumPy library, including: array creation, basic operations, indexing, slicing, iteration...
-
- Getting Started with Images Learn to load an image, display it, and save it bac Tutorial Display image
- Getting Started with Videos Learn to play videos, capture videos from a camera, and write videos
- Drawing Functions in OpenCV Learn to draw lines, rectangles, ellipses, circles, etc with OpenCV
-
- Basic Operations on Images Learn to read and edit pixel values, working with image ROI and other basic operations.
- Arithmetic Operations on Images Perform arithmetic operations on images
-
- Changing Colorspaces Learn to change images between different color spaces. Plus learn to track a colored object in a video.
- Geometric Transformations of Images Learn to apply different geometric transformations to images like rotation, translation etc.
- Image Thresholding Learn to convert images to binary images using global thresholding, Adaptive thresholding, Otsu's binarization etc
- Smoothing Images Learn to blur the images, filter the images with custom kernels etc.
- Morphological Transformations Learn about morphological transformations like Erosion, Dilation, Opening, Closing etc
- Image Gradients Learn to find image gradients, edges etc.
- Canny Edge Detection Learn to find edges with Canny Edge Detection
- Image Pyramids Learn about image pyramids and how to use them for image blending
- Contours in OpenCV All about Contours in OpenCV
- Histograms in OpenCV All about histograms in OpenCV
- Image Transforms in OpenCV Meet different Image Transforms in OpenCV like Fourier Transform, Cosine Transform etc.
- Template Matching Learn to search for an object in an image using Template Matching
- Hough Line Transform Learn to detect lines in an image
- Hough Circle Transform Learn to detect circles in an image
- Image Segmentation with Watershed Algorithm Learn to segment images with watershed segmentation
- Interactive Foreground Extraction using GrabCut Algorithm Learn to extract foreground with GrabCut algorithm
-
Feature Detection and Description
- Introduction to SIFT (Scale-Invariant Feature Transform) Harris corner detector is not good enough when scale of image changes. Lowe developed a breakthrough method to find scale-invariant features and it is called SIFT
- Introduction to SURF (Speeded-Up Robust Features) SIFT is really good, but not fast enough, so people came up with a speeded-up version called SURF.
- ORB (Oriented FAST and Rotated BRIEF) SIFT and SURF are good in what they do, but what if you have to pay a few dollars every year to use them in your applications? Yeah, they are patented!!! To solve that problem, OpenCV devs came up with a new "FREE" alternative to SIFT & SURF, and that is ORB.