Skip to content

behnamasadi/OpenCVProjects

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
conda install -c conda-forge rerun-sdk

create softlinks:

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

Edge Detection
Image Filtering Convolution
Keypoints (Feature2D) Detector and Descriptor
Keypoints matching, Image Registration
Correspondence Problem, Keypoints Matching
Image Matching WebUI
Histogram Analysis
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, Undistorting Points and Images
Triangulation
Epipolar Geometry, Essential Matrix, Fundamental Matrix
Ego Motion Estimation, Recover Pose and Pose Estimation, R,t from Essential Matrix
Sparse Optical Flow, Dense Optical Flow
Visual Odometry
KITTI Visual Odometry
Stereo Calibration
Disparity Map
Stereo Rectification
Parallax
Laser Triangulation
Bayes Filter, Estate Estimation with Kalman Filter, Extended Kalman Filter
Bag of Words, Vocabulary Tree
PnP,P3P, Perspective-n-point
3D World Unit Vector Camera Direction Vectors Camera Projection Rays
Hand Eye Calibration
Normalized Image Coordinates
Camera Models
Perspective Camera
Kannala-Brandt Fisheye Camera
Spherical Camera
Color Space
Color Calibration
Dynamic Range
White Balance
Decompose Projection Matrix
Decompose Homography Matrix
Decompose Essential Matrix

Basic Operations
Coordinate System and Points
File Storage IO
Feature Detection, Feature Description Correspondence Problem, Keypoints Matching
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

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published