2010-07-09 2 views
1

이미지를 수신하고 결과를 응답하는 웹 서버를 작성 중입니다.OpenCV IplImage 형식으로 http 포스트를 통해받은 png 이미지를로드하는 방법

이미지 형식이 png입니다. PHP를 사용하여 POST를 통해 byte []로 수신됩니다. 이 바이트 []를 OpenCV IplImage 형식으로 변환해야합니다. 이 작업을 수행하기 위해 따라야하는 단계는 무엇입니까?

내가 현재하고있는 방식은 이미지를 읽고 하드 드라이브에 저장하고 파일 경로를 OpenCV cvLoadImage() 함수로 파싱하는 것입니다. 나는 위의 단락에서 설명한 방법을 수행하는 것이 이것보다 훨씬 효과적이라고 믿습니다.

또는 직접 IplImage 형식으로 변환하지 않고 일부 OpenCV 함수에 직접 [] 바이트를 구문 분석 할 수있는 방법이 있습니까?

고맙습니다 ...

+1

http://stackoverflow.com/questions/801199/opencv-to-use-in-memory-buffers-or-file-pointers –

+0

감사합니다.하지만 PHP에서 이미지를 파싱하는 데 어떤 빛도 밝히지 않았습니다. OpenCV 기능 – Niroshan

+0

Dani가 제안한 질문에 대한 대답이 OP를 도울 것이라고 생각하지 않습니다. 그곳에서 허용되는 대답은 문서화되지 않은 기능을 사용하므로 피해야합니다. –

답변

1

나는 그렇게 할 수 없다고 생각합니다.

POST 요청에서 가져온 바이트는 파일에 저장된 실제 바이트입니다. PNG는 압축 형식이므로이 바이트는 먼저 압축을 풀어야합니다. (IplImage는 이미지의 압축되지 않은 바이트를 저장합니다.)

PNG 압축 풀기 루틴을 직접 작성하거나 라이브러리 (libpng 확인)를 사용할 수 있습니다.

일단 압축 해제 된 바이트가 있으면 IplImage 구조를 설정해야합니다.

적절한 크기와 깊이의 이미지를 생성하고 이미지 -> 데이터 포인터를 압축 해제 된 데이터로 설정하려면 cvCreateImageHeader를 사용하십시오.

압축 해제 된 데이터가 인터리브 된 BGR 형식 (파란색 바이트 1 개, 녹색 바이트 1 개, 빨간색 바이트 1 개 등)인지 확인하십시오.

관련 문제