2017-02-14 2 views
0

이미지 집합에서 비디오를 만들려면 Emgu 라이브러리를 사용하고 있습니다.프로그램을 실행할 때 대부분 MemoryOutOfBound Exception, Code 부분을 생성합니다. videoWriter()를 사용하면 프로그램, 당신은 x64 플랫폼에서 컴파일해야합니다 메모리 (> 2GB)의 많은 양을 사용할 수 있도록 필요한 경우Visual Studio에서 메모리 사용량을 늘리는 방법 C#을 사용하여 MemoryOutOfBound 예외를 방지합니다.

p = dp.FileName + ".avi"; 
VideoWriter v = new VideoWriter(p, 24, hd.Width, hd.Height, true); 
string filename = ""; 
int iiii = 0; 
for (int j = 0; j < a; j++) 
{ 
    filename="frames" + j + ".bmp"; 
    hdd = new Bitmap(jj + "\\new1\\" + filename); 
    hd = new Image<Bgr, Byte>(hdd); 
    v.WriteFrame(hd); 
} 
v.Dispose(); 
+0

당신은 또한 'hdd'에서 비트 맵 인스턴스를 삭제할 수 있습니다. 그리고 정확히 어떤 유형의 이미지인지 모르겠지만 IDisposable을 구현하는 경우에도 똑같이하십시오. 진행 상황을보고하십시오. – rene

+0

'Dispose'는 순간적이지 않습니다. GC에게 메모리 할당 ('AddMemoryPressure' /'RemoveMemoryPressure')을 지시하는 것으로 충분할 수도 있습니다. 그렇지 않으면'GC.Collect'를 호출하고 기다려야합니다. – Sinatr

+0

도움이 될지 모르겠다 : http://wiki.tesnexus.com/index.php/2-4GB_game_memory_limits_and_solutions#LAA_in_General 및 https://helloacm.com/large-address-aware/ –

답변

0

아래에 표시됩니다 (하나에서 실행).

<runtime>  
    <gcAllowVeryLargeObjects enabled="true" /> 
</runtime> 

참고 : 당신이 큰 개체 (> 2GB)을해야하는 경우 , 당신은 또한 당신의 app.config 파일에 다음 코드를 추가해야합니다 나는 당신이를 위해 .NET 4.5 이상을 실행해야합니다 생각 기능

관련 문제