이틀동안 영상 속도가 느려서 고민했는데, 정말 뜻밖의 곳에서 해결책을 찾았다.
필터링을 하면서 많이 느려졌고,
Thread 보다는 OnTimer로 호출하는게 더 빨랐다.
그리고 이진화 할때 YCbCr값 중에서 Y값은 설정을 안했는데,
같이 설정해주니까 (당연히) 색깔 검출이 잘 되었다.
지금 화면이 팽창->침식->팽창 연산만 하고
라벨링 이라던지 열림 연산이라던지 다 뺐다.
어차피 마커가 인쇄된 흰 종이를 수직으로 비추면서 시연할테니까,
이런 필터링들이 없어도 깨끗하게 잘 추출하더라.
이제 좌표값 얻어와서 포인트 잡아주는 일 남았구나.
void CameraManager::AddEffect () { IplConvKernel *element = cvCreateStructuringElementEx(2, 2, 1, 1, CV_SHAPE_ELLIPSE, NULL); cvDilate(this->camera.Get_ipl_bin_Image(), this->camera.Get_ipl_bin_Image(), element, 1); // 팽창 (배경을 축소시키고 객체의 크기를 확장) cvErode(this->camera.Get_ipl_bin_Image(), this->camera.Get_ipl_bin_Image(), element, 2); // 침식 (배경을 확장시키고 객체의 크기를 축소) cvDilate(this->camera.Get_ipl_bin_Image(), this->camera.Get_ipl_bin_Image(), element, 1); // 팽창 cvCvtColor(this->camera.Get_ipl_bin_Image(), this->camera.Get_RGB_Image(), CV_YCrCb2BGR); // YCrCb -> RGB cvCvtColor(this->camera.Get_RGB_Image(), this->camera.Get_ipl_gray_Image(), CV_RGB2GRAY); // RGB -> Gray // 이진화 cvThreshold(this->camera.Get_ipl_gray_Image(), this->camera.Get_ipl_gray_Image(), THRESHOLD, 255, CV_THRESH_BINARY | CV_THRESH_OTSU); }
'Project > 증강현실을 이용한 사천성' 카테고리의 다른 글
경과 시간 계산 및 일정시간이상 일정 범위 안의 좌표에 있으면 클릭 (2) | 2010.02.20 |
---|---|
빨강 추적 (1) | 2010.02.19 |
영상처리를 이용한 붉은색 검출 (8) | 2010.02.17 |
AR을 이용한 사천성 알 출력 (0) | 2010.02.17 |
RGB->YCbCr->이진화 (2) | 2010.02.15 |