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)

PythonとOpenCVで画像処理超入門
Python版OpenCVで画像処理プログラミングを行う方法を入門者向けにソースコード付きで解説するページです。

コメント