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> | ||
{{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 | # cv2.IMREAD_ANYCOLOR | ||
# cv2.IMREAD_ANYDEPTH | # cv2.IMREAD_ANYDEPTH | ||
# cv2.IMREAD_COLOR | # cv2.IMREAD_COLOR | ||
# cv2.IMREAD_GRAYSCALE | # 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=" | <syntaxhighlight lang="python"> | ||
# Resize to resolution | |||
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. | |||
===Face Detection=== | |||
[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] | ||