현재 목표는 격자 패턴을 이용하여 사물의 크기(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 검출을 한것.
'프로젝트(영상처리)' 카테고리의 다른 글
4. 임계값 영상 (threshold) (0) | 2017.03.10 |
---|---|
2. 프로젝트 준비 ! (0) | 2017.02.19 |
1. 프로젝트 선정 및 제안 배경 (0) | 2017.02.19 |
Visual studio 2015 c++ opencv(3.2)환경설정 (0) | 2017.02.13 |