現在地 >> メニュー >> サンプルコード::OpenCV >> オブジェクトの除去

問題


以下の画像を読み込んで、マスク画像の白い部分に対応する部分を除去せよ。

画像
マスク画像

その他条件:
 cvInpaint()を用いる。 →修復方法は、CV_INPAINT_TELEA (Alexandru Teleaによる手法)を指定。
 隣接領域半径は、10

答え


#include <cv.h>
#include <highgui.h>
#include <iostream>

using namespace std;

int main( int argc, char **argv)
{
IplImage *imgA = cvLoadImage( "sample2.bmp", CV_LOAD_IMAGE_ANYDEPTH | CV_LOAD_IMAGE_ANYCOLOR);
if(imgA ==NULL)
{
cout<<"Can't Load Image ." << endl;
exit(0);
}

IplImage *mask = cvLoadImage( "mask8.bmp", CV_LOAD_IMAGE_GRAYSCALE);
if(imgA ==NULL)
{
cout<<"Can't Load Mask Image ." << endl;
exit(0);
}


IplImage *Out_img = cvCloneImage (imgA);

cvInpaint (imgA, mask, Out_img, CV_INPAINT_TELEA, 10);

cvReleaseImage( &mask );



cvNamedWindow("original",CV_WINDOW_AUTOSIZE);
cvShowImage("original",imgA);


cvNamedWindow ("Inpaint", CV_WINDOW_AUTOSIZE);
cvShowImage ("Inpaint", Out_img);

cvWaitKey(0); // 0秒待つ => ずっと入力待ち


cvReleaseImage( &imgA );
cvReleaseImage( &Out_img );
cvDestroyWindow("original");
cvDestroyWindow("Inpaint");

return 0;
}

メモ


マスク画像は、8ビット1チャンネルで読み込む。

「スクラッチ」や「ノイズ」を除去したり,
静止画やビデオ画像から「不必要なオブジェクト」を除去するために使う。
×

この広告は60日間更新がないwikiに表示されております。

目次

― その他 ―

Wiki内検索

計測中...(07.10.8〜)

Save The World






▲よろしければ広告のクリックもお願いします


▲ランキングに参加しました

管理人/副管理人のみ編集できます