OpenCV: Difference between revisions

 
(8 intermediate revisions by the same user not shown)
Line 18: Line 18:


You need to compile [https://github.com/opencv/opencv OpenCV] from source alongside [https://github.com/opencv/opencv_contrib OpenCV-contrib].<br>
You need to compile [https://github.com/opencv/opencv OpenCV] from source alongside [https://github.com/opencv/opencv_contrib OpenCV-contrib].<br>
The easiest way is to use the automated script to compile opencv-contrib-python.<br>
The easiest way is to use [https://github.com/opencv/opencv-python#manual-builds the automated script] to compile opencv-contrib-python.<br>
Email me if you want a prebuilt wheel for Python 3.6 or 3.7.
{{hidden | Compile opencv-contrib-python |
{{hidden | Compile opencv-contrib-python |
You can build a wheel to install which includes NONFREE modules as follows:
You can build a wheel to install which includes NONFREE modules as follows:
Line 81: Line 80:
import cv2
import cv2


# cv2.IMREAD_ANYCOLOR = 4
# cv2.IMREAD_ANYCOLOR
# cv2.IMREAD_ANYDEPTH = 2
# cv2.IMREAD_ANYDEPTH
# cv2.IMREAD_COLOR = 1
# cv2.IMREAD_COLOR
# cv2.IMREAD_GRAYSCALE = 0
# cv2.IMREAD_GRAYSCALE
# cv2.IMREAD_UNCHANGED # G or BGR or BGRA


# Use cv2.IMREAD_GRAYSCALE to read in grayscale
# Use cv2.IMREAD_GRAYSCALE to read in grayscale
Line 98: Line 98:
===Resizing an Image===
===Resizing an Image===
[https://docs.opencv.org/master/da/d6e/tutorial_py_geometric_transformations.html Reference]
[https://docs.opencv.org/master/da/d6e/tutorial_py_geometric_transformations.html Reference]
<syntaxhighlight lang="bash">
<syntaxhighlight lang="python">
import numpy as np
# Resize to resolution
import cv2
new_img = cv2.resize(img, (500,200), interpolation=v2.INTER_CUBIC)
# Resize by factor
cv2.resize(img, (0, 0), fx=1/4, fy=1/4, interpolation=cv2.INTER_AREA)
</syntaxhighlight>
 
;Interpolation options
* INTER_NEAREST
* INTER_LINEAR
* INTER_CUBIC
* INTER_AREA
* INTER_LANCZOS4
 
For downscaling, use `INTER_AREA` to avoid aliasing. However, `INTER_NEAREST` will give the the optimal speed.<br>
For upscaling, use `INTER_CUBIC` for best results or `INTER_LINEAR` for best performance.


img = cv2.imread('messi5.jpg')
===Face Detection===
new_img = cv2.resize(img, (500,200), interpolation = cv.INTER_CUBIC)
[https://towardsdatascience.com/face-detection-in-2-minutes-using-opencv-python-90f89d7c0f81?gi=2fadb2dbc99d face detection in 2 minutes]
# Download [https://raw.githubusercontent.com/kipr/opencv/master/data/haarcascades/haarcascade_frontalface_default.xml haarcascade_frontalface_default.xml]
<syntaxhighlight lang="python">
face_cascade = cv2.CascadeClassifier(
            'haarcascade_frontalface_default.xml')
image_gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)
faces = face_cascade.detectMultiScale(image_gray, 1.1, 4)
</syntaxhighlight>
</syntaxhighlight>


Line 157: Line 176:
output_video.release()
output_video.release()
</syntaxhighlight>
</syntaxhighlight>
==Algorithms==
===Stereo Rectify===
This is a summary of the [https://docs.opencv.org/4.x/d9/d0c/group__calib3d.html#ga617b1685d4059c6040827800e72ad2b6 <code>cv2.stereoRectify</code>] function which produces a rectification rotation and projection matrix for calibrated cameras (i.e. cameras with known intrinsics and extrinsics).
[https://github.com/opencv/opencv/blob/4.x/modules/calib3d/src/calibration.cpp#LL2561C6-L2561C21 source code]
;Algorithm
# Rotation calculation
# Projection calculation
# Bounding box calculation
# Disparity-to-depth matrix calculation


==Resources==
==Resources==


*[https://docs.opencv.org/master/d6/d00/tutorial_py_root.html OpenCV Python Tutorial]
*[https://docs.opencv.org/master/d6/d00/tutorial_py_root.html OpenCV Python Tutorial]