반응형

C#에서, Form에 구현된 컨트롤을 Form이 아닌 다른 클래스에서 호출하려 하면,

다음과 같은 에러가 발생한다.

크로스 스레드 작업이 잘못되었습니다. 'xxxx' 컨트롤이 자신이 만들어진 스레드가 아닌 스레드에서 액세스되었습니다.


C#에서 UI 컨트롤들은, 자신이 만들어진 쓰레드에서만 엑세스될 수 있게 되어 있다.

하지만, 종종 다른 쓰레드에서 엑세스 해야 하는 경우가 있기 마련이다.

이런 경우에는, 컨트롤의 InvokeRequired 속성을 이용하여 

대리자 호출을 해야 되는 상황인지를 판단하여

직접호출을 하거나 대리자 호출을 하면 된다.

이에 대한 설명은, 다음 사이트에 잘 나와 있다.


다음은, 실제 사용 샘플이다.

delegate void deleg_log(object content, params object[] args);

public void log(object content, params object[] args)
{
    if (InvokeRequired)
    {
        deleg_log call = new deleg_log(log);
        Invoke(call, content, args);
    } else {            
        if (txtResult.Text.Length > 2000)
            txtResult.Text = String.Format(content.ToString(), args) + 
                                  txtResult.Text.Substring(0, 2000);
        else
            txtResult.Text = String.Format(content.ToString(), args) + txtResult.Text;
    }
}


반응형
반응형

OpenCV3의 샘플들을 살펴보던 중에,

KCF(kcf.cpp)를 발견하게 되었다.

OpenCV Extra Modules에 포함되어 있으며,

정확한 경로는 다음과 같다.

  • opencv_contrib/modules/tracking/samples/kcf.cpp


이 파일은, tracking 알고리즘 증에서 KCF(Kernelized Correlation Filters)를 구현한 것이다.

테스트해보니, 속도가 빠르면서도 좋은 성능을 보여 주는 것 같다.


KCF에 대한 자세한 설명은, 다음 사이트에 나와 있다.


위 사이트에 따르면, 이 방식은 트랙킹 방식 중에서 최상위에 속하는 TLD나 Struck 보다도

좋은 성능을 발휘한다고 한다.

그리고, 앞으로의 개발을 위해 프레임워크를 Open Source로 공개한다고도 한다.


반응형

'영상처리 프로젝트' 카테고리의 다른 글

신규 떨림보정(자유도 4, 자유도 2) 테스트  (0) 2016.12.22
OpenCV 2.x와 3.x의 차이  (0) 2016.10.20
opencv_contrib 빌드하기  (0) 2016.03.22
OpenCV속도비교2  (1) 2016.02.29
OpenCV 3.x에서의 OpenCL  (0) 2016.02.25
반응형

얼마전, OpenCV2.1을 빌드해야 할 일이 있었다.

CMake를 통해 프로젝트를 생성한 다음 

VisualStudio에서 빌드하면서 문제가 발생하였고,

cvinternal.h의 소스의 다음 부분을 변경하고 나서야 빌드가 가능했다.

  • #define _WIN32_WINNT 0x0400 => #define _WIN32_WINNT 0x0501


그러면서, 좀더 자세한 내용을 알고 싶어서 검색을 해 보았더니,

다음 사이트에서 원하는 답을 찾을 수 있었다.


즉, 소스가 릴리즈될 때의 윈도우즈 버젼 정보가 

WINVER 혹은 WIN32_WINNT에 담겨져 있으며,

그때문에 컴파일이 안되는 경우에는, 다음과 같이 해야 한다.

  • 소스(헤더파일) 상의 버전 정보를 직접 업데이트
  • 컴파일러 옵션을 통해 윈도우즈 버전 정보 설정


반응형

+ Recent posts