MENU

OpenCVで画像をモザイク加工する

モザイク加工は一見難しそうに見えて、実は非常に簡単なアルゴリズムでできてしまいます。

ソースコード


#include <iostream>
#include <opencv2/highgui.hpp>
#include <opencv2/imgproc/imgproc.hpp>

int main()
{
  cv::Mat src = cv::imread("src.jpg");
  if(src.empty())
  {
    std::cout << "画像がありません。" << std::endl;
    return -1;
  }
  
  int n = 8; // 閾値
  
  // 画像を縮小
  cv::resize(src, src, cv::Size(), (double)1/n, (double)1/n);
  // 画像を拡大
  cv::resize(src, src, cv::Size(), n, n, cv::INTER_NEAREST);
  
  cv::imshow("mosaic", src);
  cv::waitKey();
}

画像を縮小してから、また同じ大きさまで拡大することで簡単にモザイク加工することができます。

入力画像

src

出力画像

dst