以前にOpenCVをつかって画像や動画を読み込み、書き出しの方法を紹介しました。
今回は、画像内の任意の箇所を切り出す方法を紹介します。
画像を読み込んで一部を切り出す
使用する画像
今回は、この素敵なキツネの画像を使います。

やりたいこと
オリジナルの画像では、キツネの全身+周りに背景が写っています。今回は、キツネの顔部分だけが必要な場合を想定して、顔の切り出しをしていきます。
まずは画像を読み込む。
画像の読込にはcv2.imread()を使います。
import cv2
path = "input/fox.jpg"
img = cv2.imread(path)
画像から切り出す
切り出す画像の範囲は、スライシングで指定します。
切り出し範囲=img[縦方向(上):縦方向(下), 横方向(左):横方向(右)]
実際にキツネの顔を切り出してみます。まずは、画像のサイズを確認します。
print(img.shape)

今回の画像は、4928(幅)×3280(縦)の画像であることがわかりました。この数値の範囲内で切り出す範囲を指定します。
因みに、img.shapeの戻り値の3つ目は、カラー画像のチャネル数(色相数:RGB)を示しています。グレースケールの画像だと行、列のピクセルの2値のみ返されるので、img.shapeの結果によってカラー画像かグレースケールの画像かを判断することができます。
cropped_image = img[400:1500, 800:1700]
cv2.imshow("cropped", cropped_image)
上記の範囲で切り出すと、cropped_imageは次のような画像になります。

元の画像から顔部分だけを切り出した画像になりました。
コード全体
これまでのコードをまとめると、以下のようになります。
import cv2
path = "input/fox.jpg"
img = cv2.imread(path)
print(img.shape)
#切り取り範囲の指定
cropped_image = img[400:1500, 800:1700]
cv2.imshow("cropped", cropped_image)
cv2.waitKey(0)
cv2.destroyAllWindows()
画像を確認したい際は、imshow()やimwrite()を使います。
OpenCVの学習におすすめ書籍
PythonでOpenCV始めてみようという方におすすめなのが以下書籍です。実装例も豊富なので、1からコードを書かずとも学習を進めることができます。
オライリーの1冊は読み物というより辞書としての利用におすすめです。お値段結構しますが、細かい情報までしっかりと詰め込まれています。
まとめ
PythonのOpenCVで画像空一部分を切り出す方法を紹介しました。画像の切り出しには、スライシングを用います。画像のサイズを確認して、適切なサイズで切り出してみてください!
OpenCVの基礎を身につけるためのロードマップは以下を参考にしてください。
ではでは👋