2011-03-26 6 views
0

나는 네트워크에서 실시간으로 웹캠 이미지를 전송할 프로젝트를 진행 중이다. 하지만 Iplimage는 크기가 커서 udp 패킷에 맞지 않습니다. jpeg 형식으로 압축해야합니다. 나는 디스크에 그림을 저장하고 메모리에 읽는 많은 예제를 만들었습니다. 하지만 나는 그것을 기억하고 싶다. 내 프로젝트에서 Qt를 사용하고 있습니다.메모리상의 jpeg 압축하기

메모리에 Iplimage를 압축하는 솔루션이 있습니까? Qt는 해결책이 있습니까?

+0

가 있습니까 버퍼에 JPEG로 변환하는 imencode을 사용할 수 있습니다 : 그것은 또한 출력 장치로 메모리 버퍼를 지정 할 수 있습니다 당신은 [ImageMagick] (http://www.imagemagick.org/script/formats.php)이 당신의 포맷을 이해할만큼 충분히 행운입니까? 목록에 "입체 이미지"가 보이지는 않았지만 ImageMagick에서 누락 된 이미지 유형을 알아내는 것은 어렵습니다. – sarnold

+0

어쨌든 압축 된 이미지는 여러 개의 UDP 패킷으로 분할되어야합니다. Jpeg 압축 된 이미지가 단 하나의 UDP 패킷에 들어 가지 않을지 의심 스럽다. –

답변

2

Qt는 JPEG 형식을 지원하고 압축 수준을 지정할 수있는 QImageWriter 클래스를가집니다. QImage 데이터를 QByteArray에 저장할 수 있습니다. 아래의 예는 다음과 같습니다

QImage image("/home/image_from.png"); 

QByteArray array; 
QBuffer buffer(&array); 

// write image to memory buffer 
QImageWriter writer; 
writer.setDevice(&buffer); 
writer.setFormat("JPEG"); 
writer.setCompression(9); 
writer.write(image); 

또는 저장 방법 QPixmap 사용할 수 있습니다; 이 도움이

QImage image("/home/image_from.png"); 
QPixmap pixmap = QPixmap::fromImage(image); 

QByteArray array; 
QBuffer buffer(&array); 
pixmap.save(&buffer, "JPEG", 9); 

희망

0

에 관하여 아니면)에서 OpenCV iplimage를 사용하고 있기 때문에 당신은

+0

javaCV에서 사용할 수 있습니까? –

관련 문제