2012-02-23 2 views
0

opencv를 사용하여 디스크에서 이미지를 읽는 원시 라이브러리 사이에있는 C++/Cli interop 계층을 작성했습니다. interop 계층은 이미지를 관리되는 비트 맵으로 변환 한 다음 C# ui로 보내야합니다.
실제 변환은 메모리를 복사하여 간단합니다. 문제는이 응용 프로그램이 많은 대형 이미지를 처리해야하므로 리소스가 많이 소모된다는 것입니다. 이 때문에 이미지의 두 복사본을 메모리에 보관하지 않고 대신 관리되는 비트 맵의 ​​이미지 데이터에 포인터를 할당하여 opencv 이미지 데이터를 가리 킵니다.
처음에는 관리 비트 맵을 잠그고 Scan0 포인터를 opencv 포인터에 할당 한 다음 Stride가 opencv 이미지의 widthStep으로 설정되어 있는지 확인했습니다. (정상 IplImage를 사용하고 있습니다.)하지만 이렇게하면 나오는 이미지가 완전히 검은 색입니다.
네이티브 이미지 데이터를 복사하지 않고 관리되는 비트 맵을 만드는 방법이 있습니까?관리되는 비트 맵 및 메모리 관리

감사합니다,
최대

답변