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();
}
画像を縮小してから、また同じ大きさまで拡大することで簡単にモザイク加工することができます。