OpenCVの使い方(6) エッジ検出の手法
Sponsored Links
皆さんこんにちは
お元気ですか。私は元気です。
今日はOpenCVでエッジ検出をやってみたよ。
OpenCVで用意されている関数では3つあります。SobelとLaplacianとCannyです。
#include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/highgui/highgui.hpp> using namespace std; using namespace cv; int main(int argc, char const *argv[]){ Mat img = imread("Pepper.jpg",0); Mat sobel_img,laplacian_img,canny_img,temp_img; //Sobel Sobel(img,temp_img,CV_32F,1,1); convertScaleAbs(temp_img,sobel_img,1,0); //Laplacian Laplacian(img,temp_img,CV_32F,3); convertScaleAbs(temp_img,laplacian_img,1,0); //Canny Canny(img,canny_img,50,200); imshow("original_image",img); imshow("sobel_img",sobel_img); imshow("laplacian_img",laplacian_img); imshow("canny_img",canny_img); waitKey(0); return 0; }
Sobel
画像の1次微分をした画像
Laplacian
画像の2次微分をした画像
Canny
エッジの検出と連続部のパラメータを与えるのだそうです。
因みに画像の値は0 or 255です
アルゴリズムの内容はまだ特に調べてないので、気が向いたら実装してみようかなと思っています。
Original Image
左から順番に Sobel Laplacian Cannyです。