2022. 10. 23. 13:52

2022. 10. 23. 13:50

2022. 8. 15. 17:09

프로젝트 - NuGet 패키지 관리 가서

 

OpenCV 검색하면 OpenCvSharp3-AnyCPU 로 설치해서 진행하면 된다

 

OpenCvSharp4 로 설치했다가 별별 에러가 다 생겨서 포기하고

 

다시 설치하니 되었다

2022. 8. 15. 16:40

64비트 시스템에서 dll을 x86으로 설정해서 사용할 때 발생한다

 

C#에서 OpenCV를 제대로 한 번 실행 시키기가 매우 어렵다

2021. 10. 7. 21:45

예전에 많이 써 먹던 기능인데 오래되어 기억이 안 나서 다시 정리한다

 


C++에서 OpenCV나 다른 라이브러리들을 사용할 때 

 

매번 링크 경로 설정하고 파일 이름 가져다 쓰는 것이 번거로워서 

 

설정 내보내기를 이용해 설정 파일을 저장한다

 

우선 OpenCV Include 파일 경로를 설정한다

 

속성 페이지 - C/C++ - 일반 - 추가 포함 디렉터리

 

그 다음 OpenCV에서 사용할 라이브러리 경로를 설정한다

 

속성 페이지 - 링커 - 일반 - 추가 라이브러리 디렉터리

 

 

그 다음 사용할 라이브러리 목록을 다음 위치에 추가한다

 

속성 페이지 - 링커 - 입력 - 추가 종속성

 

그 이후 다른 프로젝트를 생성했을 때 저장한 파일을 설정 가져오기를 하여 적용하면 동일한 라이브러리 파일과 경로를 설정할 수 있어서 편하다

 

방법은 다음과 같다

 

우선 OpenCV를 설정할 라이브러리 경로와 

도구 - 설정 가져오기 및 내보내기 - 선택한 환경 설정 내보내기

- 내보낼 설정 선택 - 설정 파일 이름 지정 - 마침 을 누른다

 

 

설정하여 저장한 파일이 해당 경로에 있는지 확인한다

 

 

2015. 2. 3. 09:47


SimpleBlobDetector 내에 있는 Params 파라미터 변수를 선언하여 세팅한 후

detect()함수를 이용하여 검출하면 된다. 

정말 깔끔한 코드이다... 모든 Detector가 다음과 같은 형태를 가진다

잘 보고 배워야지...


2015. 1. 29. 18:04
기울어진 영상을 세우는 프로그램이다 
테스트 영상을 같이 첨부한다







2014. 12. 24. 14:09


두 개의 값은 다르게 나온다

bmp 저장은 배열의 값 그대로 나오고

jpg는 압축 되어서 나오기 때문에 다른 픽셀값으로 출력된다.

이걸 몰라서 일주일 헤매었다 ㅠㅜ


2014. 12. 22. 09:40

3D 그래픽스 쪽으로 회사를 다니다가

새로운 회사에서 영상처리를 하느라 다시 OpenCV를 사용하기 시작했다


내가 예전에 사용하던 버전은 1.0인데 벌써 3.0까지 나와서

지금은 3.0으로 사용하고 있다...


적응하는데 시간이 오래 걸릴 거 같다...


열심히 해야지...

2008. 9. 4. 21:03

if(ptnum > 0)
 {
  cvCalcOpticalFlowPyrLK(prev_gray, gray, prev_pyramid, pyramid,
                 m2DOld, m2DNew, ptnum, cvSize(win_size, win_size),
        3, status, 0,
        cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS, 20, 0.03), flags);
   flags |= CV_LKFLOW_PYR_A_READY;

   int k = 0;
   for(int i = 0; i < ptnum; ++i)
   {
    if( !status[i] )
               continue;

    m2DNew[k++] = m2DNew[i];
   }
   ptnum = k;
 }

 if(add_point)
 {
  m2DNew[ptnum].x = (float)pt.x;
  m2DNew[ptnum].y = (float)pt.y;
 
  add_point = false;
  cvFindCornerSubPix( gray, m2DNew, ptnum,
                cvSize(win_size,win_size), cvSize(-1,-1),
                cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS,20,0.03));
  ++ptnum;
 }

tracking을 먼저 한 다음에 점을 추가해야

tracking이 제대로 된다

 if(add_point) 를 한 다음에

if(ptnum > 0)

를 실행하면 new2D 에 0.413 등의 소수점으로 바뀌어서

계속 tracking이 되지 않는다

주의하자

2008. 8. 19. 04:39

생각하건데 OpenCV 모든 함수에서도 그렇겠지만

함수의 인자에서 포인터를 넣으면 안 된다

예를 들어서


class CDataSet
{
protected:
 CvPoint2D32f * m2DNew;
 CvPoint2D32f * m2DOld;

public:
CvPoint2D32f * GetNew() { return m2DNew; }
 CvPoint2D32f * GetOld() { return m2DOld; }
};

이라고 했을 때

cvCalcOpticalFlowPyrLK(prev_gray, gray, prev_pyramid, pyramid,
                     OldPt, NewPt, *n,
         cvSize(win_size, win_size), 3, status, 0,
         cvTermCriteria(CV_TERMCRIT_ITER|CV_TERMCRIT_EPS, 20, 0.03), flags);

이렇게 했을 때

Point Tracking 이 되지 않는다.

이거 때문에 이틀을 날리고 그 다음에

두번째 실수이다 잊어버리지 말자

그래서 같은 클래스에 넣었었던 것으로 기억된다.