Skip to content

behnamasadi/OpenCVProjects

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OpenCV Projects

alt text build workflow

This project contains my Computer Vinson Projects with OpenCV.

Building and Installation

1. Building the Image

There is docker file for this project that contains all dependencies and you build the image with :

docker build -t myopencv_image:latest .

2. Creating the container

Create a container where you mount the checkout code into your container:

docker run --name <continer-name> -v <checked-out-path-on-host>:<path-in-the-container> -it <docker-image-name>

for instance:

docker run --name myopencv_container -v /home/$USER/workspace/OpenCVProjects:/OpenCVProjects -it myopencv_image

3. Starting an existing container

If you have already created a container from the docker image, you can start it with:

docker start -i myopencv_container

4. Removing unnecessary images and containers

You can remove unnecessary images and containers by:

docker image prune -a

docker container prune

GUI application with docker

  1. You need to run:

xhost +local:docker

and then:

docker run -v <path-on-host>:<path-in-the-container> -v /tmp/.X11-unix:/tmp/.X11-unix --name <container-name> -e DISPLAY=$DISPLAY -e QT_X11_NO_MITSHM=1 --network=host --privileged -it <image-name:tag> bash

read more here

How to build on your machine

configure it:

cmake -G "Ninja Multi-Config" -S . -B build -DOpenCV_DIR="/home/$USER/usr/lib/cmake/opencv4"

build it:

cmake --build build --config Release

or

cmake --build build --config Debug

or be more specific:

cmake --build build --target all --config Release

If you prefer preset use:

cmake --preset ninja-multi

and

cmake --build --preset ninja-multi-debug

or

cmake --build --preset ninja-multi-release

Installing OpenCV Python API

Install the conda packages:

unset PYTHONPATH
export PYTHONNOUSERSITE=1
conda create -n OpenCVProjects
conda activate OpenCVProjects
conda install conda-forge::opencv
conda install scipy numpy matplotlib scikit-image  
conda install -c conda-forge jupyterlab
conda install anaconda::ipywidgets

create softlinks:

cd $HOME/anaconda3/envs/OpenCVProjects/
ln -s $HOME/workspace/OpenCVProjects/scripts .
ln -s $HOME/workspace/OpenCVProjects/images/ .

Edge Detection
Image Filtering Convolution
Histogram Analysis
Keypoints Detector and Descriptor
Pinhole Camera Model and Projection
Direct Linear Transformation
Zhang's Camera Calibration Algorithm
Extrinsic Calibration of Camera to LIDAR
Image Resolution and Calibration Parameter
Affine Transformation
Perspective Transformation
Homography Transformation
Lense Distortion Modeling, Image Undistortion
Triangulation
Epipolar Geometry
Essential Matrix
Extraction of Camera Motion
Fundamental Matrix
Image Rectification
Image Registration
Correspondence Problem
Image Matching WebUI Stereo Vision, Disparity Map
Stereo Calibration
Parallax
Sparse Optical Flow Dense Optical Flow
Visual Odometry
KITTI Visual Odometry
Ego Motion Estimation
Recover Pose and Pose Estimation
Laser Triangulation
Bayes Filter, Estate Estimation with Kalman Filter, Extended Kalman Filter
Bag of Words
Vocabulary Tree
Perspective-n-point
3D World Unit Vector Camera Direction Vectors Camera Projection Rays
Undistorting Points and Images
Hand Eye Calibration
Normalized Image Coordinates
Camera Models
Perspective Camera
Kannala-Brandt Fisheye Camera
Spherical Camera
Color Space
Color Calibration
Dynamic Range
White Balance

Basic Operations
Coordinate System and Points
File Storage IO
Blob Detection
Corner Detection
Feature Detection
Feature Description
Image Moments
PCA Principal Component Analysis
Morphological Transformation
Hough Transform
Homogeneous Conversion
Camera Calibration
Projection Matrix, Camera Intrinsic
Perspective-n-point
3D World Unit Vector
Essential Matrix Estimation
Fundamental Matrix Estimation
Rodrigue, Rotation Matrices
Tracking Objects by Color
Image Remaping
Undistorting Images
Rectifying Images
Triangulation
ICP Iterative Closest Point
Structured Light Range Finding
Estate Estimation with Kalman Filter
Drawing Frame Axes
Writing video by choosing encoder using ffmpeg and libav
Plot Frame poses in 3d
Euler Angle, Roll,Pitch, Yaw, Quaternion

Available encoders and decoders
1. FFmpeg Common Options
2. FFmpeg Filters
2.1 Available Filters
2.2 Send Output of FFmpeg Directly to FFplay
2.3 Apply a Filter
2.4 Filter Graph
2.5 Filter Complex
2.6 Filter Complex vs Filter Graph
2.7 Setting Number of Threads
2.8 Commonly Used FFmpeg Filters
3. ffprobe
4. ffmpeg metadata
5. Setting encoder for a specific codec
6. Set the format (container) and codec for the output
7. map
8. graph2dot
9. Determining Pixel Format

Virtual Camera

Colmap
Photogrammetry
Structure from Motion (SfM)
Bundle Adjustment
Noah Snavely reprojection error

Refs: 1,2,3,4