【Python/OpenCV】部分処理

Python版OpenCVで画像の一部分だけに処理を施す方法をソースコード付きで解説します。

【部分処理】NumPyのスライス

Pythonでは、NumPyのスライスを使うことで、OpenCVで読み込んだ画像の一部分だけに処理を施します。

実行例

■入力画像(左)、出力画像(右)
※画像の一部分を黒塗り

書式

img[y:y+h, x:x+w] = 値 or  NumPy配列
パラメータ 説明
x, y 窓画像の左上座標(x, y)
w, h 窓画像の幅・高さ
値を代入すると、スライスされた部分全ての要素が指定した「値」に置き換わります
NumPy配列 スライスされた部分と同じサイズのNumPy配列を代入すると、代入したNumPy配列に置き換わります

ソースコード(Python3+OpenCV3)

サンプルプログラムのソースコードです。

#-*- coding:utf-8 -*-
import cv2
import numpy as np

# 入力画像とテンプレート画像をで取得
img = cv2.imread("C:\prog\python\input.png")

# 窓画像の左上座標
x, y = 50, 100

# 窓画像の幅・高さ
w, h = 40, 40

# 窓画像を黒塗り(画素値を0に)
img[y:y+h, x:x+w] = 0

# 画像の書き込み
cv2.imwrite("C:\prog\python\output.png", img)
関連記事
1 PythonでOpenCV入門 サンプル集
2 【Python】画像処理プログラミング入門
3 【画像処理入門】アルゴリズム&プログラミング
関連記事