2011-05-09 2 views
0

EmguCV를 사용하고 있고 바이트 유형이 있습니다. 그레이 스케일 행렬의 크기는 640x480이고 행렬의 모든 요소는 255 또는 0입니다. 이제 이미지를 만들 필요가 있습니다. 이. 찾은 최고의 생성자는 다음과 같습니다.EmguCV - 관리되지 않는 데이터에서 이미지 만들기

매트릭스에서 첫 번째, 두 번째 및 네 번째 매개 변수를 얻었으며 스트라이드에 640을 보냈습니다. 그러나 그것은 나를 준다

Access violation exception: Attempted to read or write protected memory. This is often an indication that other memory is corrupt. 

나는 어떤 도움을 주셔서 감사합니다.

답변

1

포인터로 잘못 전달 된 것 같습니다. 잘못된 보폭은 이미지 내용이 왜곡 된 것처럼 보입니다. 보폭은 항상 메모리에있는 한 이미지 라인의 길이를 나타 내기 때문에 (640 바이트의 경우) 올바른 값이됩니다 (너비를 다시 사용하십시오). 짐작할 수 있지만 매트릭스의 _ptr 포인터를 사용하려고하지 마십시오. 이것은 논리적으로 들릴지 모르겠지만, (원하는) 데이터뿐만 아니라 전체 매트릭스 객체를 가리킬 것입니다. 지금 당장 확인하지 않고, 매트릭스의 copyTo()을 사용하여 내용을 이미지로 복사 할 수 있다고 확신합니다 (유스 케이스로 충분하다면).

+0

아마 추측 했겠지만, 그 줄은 예외의 정확한 위치가 아닙니다. 예외는 만들어진 이미지를 사용하는 다음 줄에서 발생합니다. 행렬의 copyTo()는 CvArray를 입력으로 사용하지만 이미지에는 byte [] 멤버 ​​만 있습니다. 그것을 이미지에 복사하는 방법에 대해 알고 있습니까? – Auxiliary

+0

저는 Image가 CvArray 대체 (iirc에서 파생 됨)로 사용될 수 있다고 확신합니다. 지금 시험 할 시간이 없어. – Mario

+0

와우, 효과가있었습니다. 너 내가 얼마나 너의 도움에 감사 할 지 모르겠다. – Auxiliary