Visual Studio 2013 Express Visual C++( アンマネージドコード ) OpenCV 3.1 |
■256.OpenCV モルフォロジー変換 | Prev Top Next | |
|
今回はモルフォロジー変換です。画像を収縮したり膨張したり、それらの減算演算を行ったりしてさまざまな画像処理を行います。
#include <iostream> #include <opencv2/highgui/highgui.hpp> #include <opencv2/imgproc/imgproc.hpp> #pragma comment( lib, "opencv_world300d.lib" ) int main(int argc, const char* argv[]) { int hr = -1; try { cv::Mat src, dest; src = cv::imread("D:/TEMP/MaverickProj/Image/OpenCV/18/Texture.png", cv::IMREAD_COLOR); cv::morphologyEx( src, dest, cv::MORPH_OPEN, // モルフォロジー演算の種類 cv::Mat(), cv::Point( -1, -1 ), 4, // 収縮と膨張が適用される回数. cv::BORDER_CONSTANT, cv::morphologyDefaultBorderValue() ); std::cout << "Successed" << std::endl; // 元画像のウィンドウ表示 cv::namedWindow("Source", 1); imshow("Source", src); // フィルタ適用後の画像のウィンドウ表示 cv::namedWindow("morphology", 1); imshow("morphology", dest); cv::waitKey(0); hr = 0; } catch (cv::Exception ex) { std::cout << ex.err << std::endl; } // ウィンドウの破棄 cv::destroyAllWindows(); return hr; }
op = cv::MORPH_CLOSE( 拡大して縮小する。使いどころが思いつかない。 ) →
op = cv::MORPH_GRADIENT( 拡大 - 縮小 ) →
op = cv::MORPH_TOPHAT( 元画像 - MORPH_OPEN ) →
op = cv::MORPH_BLACKHAT( MORPH_CLOSE - 元画像。使いどころが思いつかない。 ) →