OpenCV is an image processing library created by Intel and later supported by Willow Garage and now maintained by Itseez. It is available on Mac, Windows, Linux. Works in C, C++, and Python.
The most important thing is that it's Open Source and free.
For more image processing basics, please check my Image_Processing_100_Questions repository:
- English Version: Image_Processing_100_Questions
- Original Japanese Version by yoyoyo-yo: Gasyori 100knock
This repository contains some code files copied from some online courses and web tutorials. I modified these files so that it's more clear and easy for beginners to learn. The original links are listed below:
-
Download this repository and extract it:
git clone [email protected]:KuKuXia/OpenCV_for_Beginners.git
-
Download the anaconda and install it.
-
Create a virtual environment:
conda create -n CV python=3.6
-
Install the packages:
cd OpenCV_for_Beginners/ pip install -r requirements.txt
-
Open one file and enjoy your journey.
- Python scalar operations are faster than Numpy scalar operations. So for operations including one or two elements, Python scalar is better than Numpy arrays. Numpy takes advantage when size of array is a little bit bigger.
- Normally, OpenCV functions are faster than Numpy functions. So for same operation, OpenCV functions are preferred. But, there can be exceptions, especially when Numpy works with views instead of copies.
The fully documented files are listed below. I'm working on adding more comments to my codes.
Name | Note |
---|---|
01_Basics_Read_and_Write_Image | Read and write image |
01_Color_Spaces_in_OpenCV | Using RealSense to learn the color space |
02_Read_and_Write_Images_from_Camera | Read and write images from a camera |
03_Draw_Geometric_Shapes_on_Image | Draw draw geometric shapes on image |
04_Read_Camera_Frame_Rate | Read camera frame rate |
04_Set_Camera_Properties | Set the properties of the camera |
05_Show_Date_and_Time_on_Videos | Show date and time on videos |
06_Show_Pixel_Details_using_Mouse | Show pixel details by callback function |
07_Draw_Lines_using_Mouse | Draw lines using callback function |
07_Draw_Shapes_using_Mouse | Draw rectangle and circle using callback function |
08_Basic_Properties_and_Operations | Basic properties and operations on images |
09_Arithmetic_Operations | Arithmetic operation on images |
10_Trackerbar_RGB_Chanels | Learn RGB channels with trackerbar |
10_Trackerbar_Switch_and_Text | Trackerbar with switch and text |
11_Object_Detection_and_Object_Tracking_using_RealSense | Using RealSense to do real time object tracking and detection |
12_Image_Global_Thresholding | Image thresholding |
12_Image_Thresholding_with_Matplotlib | Image thresholding with matplotlib |
13_Adaptive_thresholding | Adaptive thresholding |
14_Otsu's_Binarization | Otsu's Binarization |
31_Homography | Homography between two images |
31_Object_Tracking_Advanced | Object tracking |
31_Multi_Object_Tracking | Multi object tracking |
39_Shape_Matching | Shape matching using Hu moments |
42_Blob_Detection | Blob detection |
42_Find_the_Center(Centroid)_of_a_Blob | Find the center(centroid) of a blob using moment |
43_Seamless_Cloning | Seamless cloning |
43_Seamless_Cloning_with_Different_Clone_Mode | Seamless cloning with different clone mode |
44_Non_Photorealistic_Rendering | Non-Photorealistic Rendering using domain transform for edge-aware filtering |
45_ApplyColorMap_for_Pseudocoloring | Apply color map for pseudo coloring |
46_Filling_Holes_in_an_Image | Filling holes in an image |
47_Delaunay_Triangulation_and_Voronoi_Diagram | Delaunay Triangulation and Voronoi Diagram |
48_Image_Alignment_based_on_ORB_Features | Image alignment based on ORB features |
48_Image_Alignment_using_ECC_Euclidean | Image alignment using ECC Maximization(Euclidean) |
48_Image_Alignment_using_ECC_Homography | Image alignment using ECC Maximization(Homography) |
49_Warp_One_Triangle_to_Another | Warp one triangle to another |
50_Rotation_Matrix_to_Euler_Angles | Rotation matrix to Euler angles |
51_Select_ROI | Select region of interest |
52_Automatic_Red_Eye_Remover | Automatic red Eye remover |
53_Virtual_Keyboard | RealSense virtual keyboard |
54_Alpha_Blending | Alpha blending |
55_Selective_Search_for_Object_Detection | Selective search for object detection |
56_High_Dynamic_Range | High dynamic range |
57_Exposure_Fusion | Exposure Fusion |
58_OCR_using_tesseract | OCR using tesseract |
59_Convex_Hull | Convex Hull |
60_Heatmap_for_Logo_Detection | Heatmap for logo detection |