トップページ -> 実践知識 -> OpenCV の使用法 -> OpenCV を用いた Image Inpainting プログラム例
[サイトマップへ]  

OpenCV を用いた Image Inpainting プログラム例

サイト構成 連絡先,業績など 実践知識 データの扱い コンピュータ 教材 サポートページ

OpenCV を用いて、Image Inpainting を行う

◆プログラムの例

#include <cv.h>
#include <highgui.h>
#include <photo/photo.hpp>

// This program is 'inpaint' sample

using namespace cv;

int main( int argc, char** argv )
{
  Mat rgb, mask, rgb2, rgb3; 

  // read original image
  rgb = imread( "/usr/local/share/opencv/samples/c/fruits.jpg", /* 3-channel color image */ 1 );
  // mask is white rectangle on a black background 
  mask = Mat::zeros(rgb.size(), CV_8U);
  rectangle( mask, Point(40,40), Point(160,160), Scalar::all(255), CV_FILLED, 8, 0 );
  // do inpaint 
  inpaint(rgb, mask, rgb2, /* inpaint radius */ 10.0, /* INPAINT_NS or INPAINT_TELEA */ INPAINT_NS);
  inpaint(rgb, mask, rgb3, /* inpaint radius */ 10.0, /* INPAINT_NS or INPAINT_TELEA */ INPAINT_TELEA);

  // display 
  namedWindow( "mask", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO );
  imshow( "mask", mask );
  waitKey(0);

  // display 
  namedWindow( "INPAINT_NS", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO );
  imshow( "INPAINT_NS", rgb2 );
  waitKey(0);

  // display 
  namedWindow( "INPAINT_TELEA", CV_WINDOW_AUTOSIZE | CV_WINDOW_FREERATIO );
  imshow( "INPAINT_TELEA", rgb3 );
  waitKey(0);

  return 0;
}

◆プログラム中で使用している OpenCV の機能

◆ Linux でのビルド手順例

g++ -o a.out hoge.cc -I/usr/local/include/opencv2 -I/usr/local/include/opencv -L/usr/local/lib -lopencv_photo -lopencv_highgui -lopencv_core

◆ 実行結果の例 (OpenCV バージョン 2.4.1 で実行)

./a.out