[2] OpenCV

pip install opencv-python

1. Install OpenCV

1.1. Compilation pre-requisites

Mac OS X

brew install cmake pkg-config
brew install jpeg libpng libtiff openexr
brew install eigen tbb
brew install python3

1.2. Download OpenCV

Mac OS X

cd ~
git clone https://github.com/Itseez/opencv.git
cd opencv
git checkout 3.1.0
cd ~
git clone https://github.com/Itseez/opencv_contrib
cd opencv_contrib
git checkout 3.1.0

1.3. Compile OpenCV

Mac OS X

cd ~/opencv
mkdir build
cd build
cmake -D CMAKE_BUILD_TYPE=RELEASE \
    -D CMAKE_INSTALL_PREFIX=/usr/local \
    -D PYTHON3_PACKAGES_PATH=~/.virtualenvs/cv3/lib/python3.4/site-packages \
    -D PYTHON3_LIBRARY=/usr/local/Cellar/python3/3.5.2_2/Frameworks/Python.framework/Versions/3.5/lib/libpython3.5m.dylib \
    -D PYTHON3_INCLUDE_DIR=/usr/local/Cellar/python3/3.5.2_2/Frameworks/Python.framework/Versions/3.5/include/python3.5m \
    -D INSTALL_C_EXAMPLES=OFF \
    -D INSTALL_PYTHON_EXAMPLES=ON \
    -D BUILD_EXAMPLES=ON \
    -D BUILD_opencv_python3=ON \
    -D OPENCV_EXTRA_MODULES_PATH=~/opencv_contrib/modules ..

num_cores=`sysctl -n hw.ncpu`
make -j$num_cores

1.4. Install

Mac OS X

brew -v install opencv3 --HEAD --with-python3
ln -s /usr/local/Cellar/opencv3/HEAD-b38d29b_4/lib/python3.5/site-packages/cv2.cpython-35m-darwin.so /Users/vruiz/.virtualenvs/cv3/lib/python3.5/site-packages/cv2.so

Ubuntu

sudo apt-get install libopencv-dev python-opencv
pip install opencv-python

2. Display a remote image


In [ ]:
import cv2
import numpy as np
import urllib.request
from matplotlib import pyplot as plt
%matplotlib inline

HTTP_response = urllib.request.urlopen('http://www.hpca.ual.es/~vruiz/images/lena.png')
arr = np.asarray(bytearray(HTTP_response.read()), dtype=np.uint8)
BGR = cv2.imdecode(arr,-1)
RGB = cv2.cvtColor(BGR, cv2.COLOR_BGR2RGB)
plt.imshow(RGB)

3. Change the color space


In [ ]:
Y = cv2.cvtColor(BGR, cv2.COLOR_BGR2YCrCb)[:,:,0]
plt.imshow(Y, cmap='gray')

4. Extract a tile


In [ ]:
template = Y[200:300,200:300]
w, h = template.shape
plt.imshow(template, cmap="gray")

5. Match a subimage inside of a image


In [ ]:
res = cv2.matchTemplate(Y, template, cv2.TM_CCOEFF)
plt.imshow(res, cmap="gray")

In [ ]:
min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
top_left = max_loc
bottom_right = (top_left[0] + w, top_left[1] + h)

In [ ]:
print(bottom_right)
cv2.rectangle(RGB, top_left, bottom_right, (0,255,0), 3)
plt.imshow(RGB, cmap="gray")