현재 목표는 격자 패턴을 이용하여 사물의 크기(size)를 측정하는 것.


각 패턴의 길이와 패턴 사이사이 길이는 정해져 있다.  격자 위에 사물을 놓을 경우  격자를 이용하여 크기를 구할 수 있다.






위 목표를 하기에 앞서 필요한 함수들을 먼저 공부하는 시간을 갖겠다.


첫번째는 canny 에지 검출 (2진화)


에지(edge)는 영상의 물체와 물체 사이 또는 물체와 배경 사이의 경계에서 발생한다.


#include<opencv2\opencv.hpp>

using namespace cv;

using namespace std;

int main()

{

Mat srcImage = imread("picca.jpg", IMREAD_GRAYSCALE);

Mat srcImage2 = imread("picca.jpg",IMREAD_COLOR);

if (srcImage.empty())

return -1;

Mat edges;

Mat edges2;

Canny(srcImage, edges, 50, 100);

Canny(srcImage2, edges2, 50, 100);

imshow("srcImage",srcImage);

imshow("edges",edges);

imshow("srcImage2", srcImage2);

imshow("edges2", edges2);


waitKey(0);

return 0;

}


void canny(InputArray image, OutputArray edges, double threshold1, double threshold2);


연결된 에지를 얻기 위하여 두 개의 임계값(threshold1, threshold2)을 사용한다. 먼저 높은 값의 임계값(threshold1)을 사용하여 그래디언트 방향에서 낮은 값의 임계값(threshold2)이 나올때 추적하며 에지를 연결하는 히스테리시스 임계값 방식을 사용한다


위에것은 grayscale(흑백)    아래것은 color로 edge 검출을 한것.






+ Recent posts