Visual Studio 2013 Express Visual C++( アンマネージドコード ) OpenCV 3.1 |
■252.OpenCV Sobelオペレータ | Prev Top Next | |
|
今回はSobelオペレータです。これはノイズなどの影響を受けずに正しく輪郭抽出を行うためのアプローチの一つです。
#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/14/Texture.png", cv::IMREAD_GRAYSCALE); cv::Sobel( src, dest, -1, // 出力画像のビット深度. 1.8, // xに関する微分の次数. 1.8, // yに関する微分の次数. 3, // 拡張Sobelカーネルのサイズ. 1, 3, 5 あるいは 7 のいずれか. 1, // 求められた微分値に対するスケールファクタ 0, // dst に格納する前に,結果に足されるオプション値. cv::BORDER_DEFAULT ); std::cout << "Successed" << std::endl; // 元画像のウィンドウ表示 cv::namedWindow("Source", 1); imshow("Source", src); // フィルタ適用後の画像のウィンドウ表示 cv::namedWindow("Sobel", 1); imshow("Sobel", dest); cv::waitKey(0); hr = 0; } catch (cv::Exception ex) { std::cout << ex.err << std::endl; } // ウィンドウの破棄 cv::destroyAllWindows(); return hr; }
xorder = 1.8 yorder = 1.8 ksize = 3