メモ書き
忘れやすい自分のためのメモ書きです.
「画像の一部をぼかし処理したいっ!」とか思ったときに
すぐに思い出せないことがあるので...
画像の一部を処理する方法は,マイナビの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;
}
処理結果
処理結果は以下のとおり・・・悪意はあります.