Things on this page are fragmentary and immature notes/thoughts of the author. Please read with your own judgement!
** Things on this page are fragmentary and immature notes/thoughts of the author. Please read with your own judgement! **
Installation¶
You can install OpenCV for Python using the following commands.
:::bash
sudo apt-get install libsm6 libxrender-dev
pip3 install opencv-pythonIf you use xinstall, you can install OpenCV for Python with the following single command.
:::bash
xinstall --sudo cv -icTips and Traps¶
cv2.imreadreturns a numpy ndarray in Python. This is different fromPIL.Image.Image.openwhich returns a Pillow Image.cv2.imreadcan be more efficient if you want to manipulate the underlying data of image as you do not have to convert between the underlying data and image objects.OpenCV uses the
BGRrepresentation of an image when storing it as a numpy array. This is different from Pillow which uses theRGBrepresentation of images.numpy.flip(arr, 2)might help if a library doesn’t different representation of images (e.g.PIL.Image.fromarraydoes not supportBGReven if it hasmodeparameter).cv2.imwritesupport writing to different format of image, and the format of the output image is determined by the file extension.
import numpy as np
from PIL import Image
import cv2cv2.imread returns a numpy array, however, it is in BGR mode which is different from Pillow (who uses RGB mode).
cv2 uses BGR mode ...
!curl -sSL -o 4h.png https://user-images.githubusercontent.com/824507/128439087-0c935d86-bb34-4c2c-8e69-6d78b3022833.pngarr = cv2.imread("4h.png")
Image.fromarray(np.flip(arr, 2))
cv2.copyMakeBorder¶
arr2 = cv2.copyMakeBorder(
arr, 9, 9, 9, 9, borderType=cv2.BORDER_CONSTANT, value=(0, 255, 0)
)
Image.fromarray(np.flip(arr2, 2))
cv2.addWeighted¶
cv2.addWeighted(target_img, 0.8, red_img, 0.2, 0)