OpenGL de プログラミング - モルフォロジー演算
現在地 >> メニュー >> サンプルコード::OpenCV >> モルフォロジー演算

問題


以下の画像を読み込んで、モルフォロジー演算によって、エッジを検出せよ。

画像

その他条件:
「モルフォロジーグラジエント」で検出する。→ CV_MOP_GRADIENTを指定


答え


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

using namespace std;

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



IplImage *tmp = cvCloneImage(imgA);
cvMorphologyEx (imgA, imgA, tmp, NULL, CV_MOP_GRADIENT, 1);



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

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


cvReleaseImage( &imgA );

cvDestroyWindow("window");

return 0;
}

メモ


「モルフォロジーグラジエント」は、(膨張画像 - 収縮画像)でエッジ検出。


cvMorphologyEx()関数
http://opencv.jp/opencv/document/opencvref_cv_morp...
※今回第4引数はNULLとした。(独自のelementがほしいときに指定する)


モルフォロジー演算
http://wwwdoi.elec.nara-k.ac.jp/html/doilab/lab98/...