본문 바로가기

색 추적

빨강 추적 분명 중심도 구하고 cvCircle 함수도 썼는데 왜 안되나 했었더니, 원본 영상 이미지를 다시 출력해주는걸 깜박했다ㅋㅋ 이런 어이없는 실수를 ㅋㅋ void CameraManager::DrawCircle () { int i = 0; int j = 0; int counter = 0; CvPoint m_ptRed = cvPoint(0, 0); CRect rect; int x, y; this->pDC = this->originalCam->GetDC(); //Picture Box의 영역을 구함 this->originalCam->GetClientRect(&rect); x = rect.top; y = rect.left; rect.SetRect(x, y, x + CAM_WIDTH, y + CAM_HEIGHT); //.. 더보기
영상 속도가 느린 이유 이틀동안 영상 속도가 느려서 고민했는데, 정말 뜻밖의 곳에서 해결책을 찾았다. 필터링을 하면서 많이 느려졌고, Thread 보다는 OnTimer로 호출하는게 더 빨랐다. 그리고 이진화 할때 YCbCr값 중에서 Y값은 설정을 안했는데, 같이 설정해주니까 (당연히) 색깔 검출이 잘 되었다. 지금 화면이 팽창->침식->팽창 연산만 하고 라벨링 이라던지 열림 연산이라던지 다 뺐다. 어차피 마커가 인쇄된 흰 종이를 수직으로 비추면서 시연할테니까, 이런 필터링들이 없어도 깨끗하게 잘 추출하더라. 이제 좌표값 얻어와서 포인트 잡아주는 일 남았구나. void CameraManager::AddEffect () { IplConvKernel *element = cvCreateStructuringElementEx(2, 2, .. 더보기
영상처리를 이용한 붉은색 검출 우선 붉은 색 검출에 성공을 하긴 했는데 속도가 느리다. 한눈에 '느리다' 라는 느낌이 든다. OnPaint 함수를 사용해서 OpenCV관련 처리들을 해주는데, OnPaint함수 특성상 계~속 호출이 되기 때문에 발생하는 현상같다. 이제 코드를 모두 Thread화 시키는 작업을 하고, 색 추적 구현을 해야겠다. void CameraManager::FindRedColor (CDC** pDC_YCbCr, CStatic *yCbCrCam) { CRectrect; int x, y; this->camera.Create_ipl_YCbCr_Image(); this->camera.Create_ipl_bin_Image(); this->camera.Create_RGB_Image(); this->camera.Create_Y.. 더보기