LoginSignup
14
13

More than 5 years have passed since last update.

【OpenCV】画像の一部のみ処理するROIの設定について【Python版】

Posted at

はじめに

かなり前に、画像の一部のみ処理するROIの設定について【OpenCV2.x,3.x】という記事を書いていましたが、
最近は、C++を使わず、Pythonばかりいじるようになってきたので、Python版のROI設定をメモ書きしようと思います。

 サンプルコード

サンプルコードは前回と同じ、画像のぼかし処理です。

##
# cording:utf-8
##

import numpy as np
import cv2

def main():
    # 画像入力
    img = cv2.imread("test.jpg")

    print(img.shape)

    # 処理領域を設定(left(x1), top(y1), right(x2), bottom(y2))
    roi = (937,218, 1280, 350)

    # 出力の初期化(入力画像を複製)
    dst_img = img.copy()

    # ROI領域を抜き出し、抜き出した画像をぼかす
    # [top:bottom, left:right] 順序
    s_roi = img[roi[1]: roi[3], roi[0]: roi[2]]
    s_roi = cv2.blur(s_roi, (30, 30)) # ぼかし処理

    # 出力画像の同じ箇所に埋め込み
    dst_img[roi[1]: roi[3], roi[0]: roi[2]] = s_roi

    # ぼかした領域をわかりやすくするために入力画像に矩形描画
    rect_img = img.copy()
    cv2.rectangle(rect_img, (roi[2],roi[3]), (roi[0],roi[1]), (0, 255, 0), 2)

    # 描画
    cv2.namedWindow("image", cv2.WINDOW_AUTOSIZE | cv2.WINDOW_FREERATIO)
    cv2.namedWindow("dst_image", cv2.WINDOW_AUTOSIZE | cv2.WINDOW_FREERATIO)
    cv2.imshow("image", rect_img)
    cv2.imshow("dst_image", dst_img)
    cv2.waitKey()

    cv2.destroyAllWindows()

if __name__ == '__main__':
    main()

 結果

今回もあかりちゃんに犠牲になってもらいました。
犠牲の犠牲にな・・・
緑の枠の部分をぼかしています。

rect.jpg

dest.jpg

14
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
14
13