0

Visual Studio 2013을 사용하여 C#에서 내 앱을 프로그래밍합니다.이 용도로 EmguCV (3.1)를 사용합니다. 폴더에서 각 이미지 파일을로드하고 일부 프로세스를 수행합니다. 내 응용 프로그램은 다음과 같이 몇 가지 일이 :가 응답하지 않습니다EmguCV (3.1)에서 CvInvoke.cvReleaseImage() 사용

private void SomeProcessesOnSingleImage(String filePath) 
{ 
    // Some Bitmap instances 
    // Some Image<Gray, Byte> instances 
    // Some Image<Bgr, Byte> instances 
    // Some UMat instances 

    // Do some processes 
    // Save file 
} 
private void BatchProcessor() 
{ 
    String[] filePathes = Directory.GetFiles(d.SelectedPath); 
    foreach(String path in filePathes) 
    { 
     SomeProcessesOnSingleImage(path); 
    } 
} 

내 응용 프로그램을 실행 한 약 1 분 후, 나는 내 그래픽 카드에 대해이 메시지가 표시 : 내를 지금

enter image description here

질문은 다음과 같습니다

  1. 나는 CvInvoke.cvReleaseImage() 또는 Garbage collector이 그것을 사용 Image< , > 또는 UMat를 공개해야할까요?
  2. Bitmap 및 기타 유사한 인스턴스에 using을 사용해야합니까?
  3. 위의 질문에 인 경우 어떻게 해결할 수 있습니까?

단일 이미지 (단지 SomeProcessesOnSingleImage 메서드를 호출 할 때)를 사용할 때 내 앱이 완벽하게 작동합니다.

업데이트 1 : 나는 오픈 CL (사실 UseOpenCL =)를 사용

답변

0

당신은 "문을 사용하여"하여 이미지 객체가 사용하는 메모리를 해제해야한다. 또는 CvInvoke.cvReleaseImage()를 사용할 수 있습니다.