18
15

More than 5 years have passed since last update.

画像の一部のみ処理するROIの設定について【OpenCV2.x,3.x】

Last updated at Posted at 2016-08-13

メモ書き

忘れやすい自分のためのメモ書きです.
「画像の一部をぼかし処理したいっ!」とか思ったときに
すぐに思い出せないことがあるので...

画像の一部を処理する方法は,マイナビのOpenCVブックサポートサイトに載っています.
こちらを参考にしました.

サンプルコード

サンプルコードは以下の通りです.
入力画像を表示する時に,処理範囲がわかりやすいように緑の矩形を表示しています.


#include"OpenCV3.h" //自作OpenCVヘッダ

int main(void)
{
    //画像入力
    cv::Mat img = cv::imread("img_0.jpg");

    //処理領域を設定
    cv::Rect roi(390, 124, 110, 100);

    //出力の初期化(入力画像を複製)
    cv::Mat dst_img = img.clone();

    //ROIの設定
    cv::Mat s_roi = img(roi);
    cv::Mat d_roi = dst_img(roi);  /* 出力側も同じ領域を指定 */

    //ROIの領域をぼかす
    cv::blur(s_roi, d_roi, cv::Size(30,30));  /* ROIを設定した画像で入出力を行う */

    //ぼかした領域をわかりやすくするために入力画像に矩形描画
    cv::Mat rect_img = img.clone();
    cv::rectangle(rect_img,roi, cv::Scalar(0, 255, 0), 2);

    //描画
    cv::namedWindow("image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
    cv::namedWindow("dst_image", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO);
    cv::imshow("image", rect_img);
    cv::imshow("dst_image", dst_img);
    cv::waitKey();

    cv::destroyAllWindows();

    return 0;
}

処理結果

処理結果は以下のとおり・・・悪意はあります.

入力画像

緑の枠の部分をぼかし処理します.
image_screenshot_13.08.2016.png

出力結果

選択した範囲のみぼかし処理が施され,出力されます.
dst_image_screenshot_13.08.2016.png

18
15
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
18
15