MENU

[AI from Scratch] Episode 273: Introduction to OpenCV

TOC

Recap and Today’s Theme

Hello! In the previous episode, we explained how to handle image data. We covered the basics of pixel data and learned how to load images using Python.

In this episode, we will introduce OpenCV, a powerful library widely used in computer vision and image processing. This article will explain the basic usage of OpenCV and how to perform fundamental image operations.

What is OpenCV?

OpenCV (Open Source Computer Vision Library) is an open-source library for computer vision and image processing, offering various algorithms for image analysis, object recognition, face detection, video processing, and more. It is suitable for real-time image processing and can be easily utilized from Python.

Installing OpenCV

To use OpenCV with Python, you first need to install the library. You can do so by running the following command:

pip install opencv-python

Once installed, you can start using OpenCV with the module name cv2.

Basic Image Operations with OpenCV

Here, we’ll introduce how to perform basic image operations such as loading, displaying, and saving images with OpenCV.

1. Loading an Image

To load an image, use the cv2.imread() function. This function takes the path to the image file and the mode in which to load it.

import cv2

# Load a color image
image = cv2.imread('example.jpg', cv2.IMREAD_COLOR)

# Load a grayscale image
gray_image = cv2.imread('example.jpg', cv2.IMREAD_GRAYSCALE)
  • cv2.IMREAD_COLOR: Loads the image in color (this is the default).
  • cv2.IMREAD_GRAYSCALE: Loads the image in grayscale.

2. Displaying an Image

To display an image using OpenCV, use the cv2.imshow() function. The window can be closed by waiting for a key input using cv2.waitKey(0).

# Display the images
cv2.imshow('Color Image', image)
cv2.imshow('Grayscale Image', gray_image)

# Wait indefinitely for a key input
cv2.waitKey(0)

# Close all windows
cv2.destroyAllWindows()

The first argument of cv2.imshow() is the window name, and the second is the image data to display.

3. Saving an Image

To save an image processed with OpenCV, use the cv2.imwrite() function.

# Save the images
cv2.imwrite('output.jpg', image)
cv2.imwrite('output_gray.jpg', gray_image)

This code saves the color and grayscale images under the specified filenames.

Basic Image Manipulations in OpenCV

OpenCV provides various functions for manipulating images. Below are some basic operations.

1. Resizing an Image

To resize an image, use the cv2.resize() function, which allows you to resize the image to the specified dimensions.

# Resize the image to 200x200 pixels
resized_image = cv2.resize(image, (200, 200))

# Display the resized image
cv2.imshow('Resized Image', resized_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

2. Rotating an Image

To rotate an image, use the cv2.rotate() function. OpenCV provides rotations in 90-degree increments.

# Rotate the image 90 degrees clockwise
rotated_image = cv2.rotate(image, cv2.ROTATE_90_CLOCKWISE)

# Display the rotated image
cv2.imshow('Rotated Image', rotated_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Other available rotations include cv2.ROTATE_90_COUNTERCLOCKWISE and cv2.ROTATE_180.

3. Cropping an Image

To crop part of an image, you can use NumPy array slicing to specify the pixel range.

# Crop a region from the image
cropped_image = image[50:200, 100:300]

# Display the cropped image
cv2.imshow('Cropped Image', cropped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Here, we crop the image from coordinates (50, 100) to (200, 300).

4. Converting Color Spaces

You can easily convert color spaces using OpenCV. For example, to convert from RGB to HSV, use the cv2.cvtColor() function.

# Convert from BGR to HSV
hsv_image = cv2.cvtColor(image, cv2.COLOR_BGR2HSV)

# Display the HSV image
cv2.imshow('HSV Image', hsv_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

Note that OpenCV uses the BGR color order by default.

5. Blurring an Image

To blur an image and reduce noise, you can apply a Gaussian blur using the cv2.GaussianBlur() function.

# Apply Gaussian blur
blurred_image = cv2.GaussianBlur(image, (15, 15), 0)

# Display the blurred image
cv2.imshow('Blurred Image', blurred_image)
cv2.waitKey(0)
cv2.destroyAllWindows()

In this example, we apply a Gaussian blur with a 15×15 kernel.

Application Example: Face Detection

OpenCV includes a built-in face detection function using Haar cascade classifiers. Here is a basic example of face detection:

# Load the Haar cascade classifier
face_cascade = cv2.CascadeClassifier(cv2.data.haarcascades + 'haarcascade_frontalface_default.xml')

# Convert the image to grayscale
gray = cv2.cvtColor(image, cv2.COLOR_BGR2GRAY)

# Detect faces
faces = face_cascade.detectMultiScale(gray, scaleFactor=1.1, minNeighbors=5, minSize=(30, 30))

# Draw rectangles around detected faces
for (x, y, w, h) in faces:
    cv2.rectangle(image, (x, y), (x+w, y+h), (255, 0, 0), 2)

# Display the result
cv2.imshow('Face Detection', image)
cv2.waitKey(0)
cv2.destroyAllWindows()

This code detects faces in an image and draws blue rectangles around them.

Summary

In this episode, we introduced the basics of OpenCV, including loading, displaying, and saving images, as well as performing operations like resizing, rotating, cropping, color conversion, and blurring. Understanding these operations will help you grasp the fundamentals of image processing and open up possibilities for more advanced applications.

Next Episode Preview

In the next episode, we will delve into image preprocessing techniques, such as resizing, normalization, and filtering.


Notes

  1. Haar Cascade Classifier: A method for extracting features from images, commonly used for face detection.
  2. Gaussian Blur: A filter that smooths an image by applying a Gaussian distribution.
  3. Color Space Conversion: The process of changing the color representation of an image, such as converting from BGR to HSV.
Let's share this post !

Author of this article

株式会社PROMPTは生成AIに関する様々な情報を発信しています。
記事にしてほしいテーマや調べてほしいテーマがあればお問合せフォームからご連絡ください。
---
PROMPT Inc. provides a variety of information related to generative AI.
If there is a topic you would like us to write an article about or research, please contact us using the inquiry form.

Comments

To comment

TOC