내 문제에 대한 배경 정보. 내 목표는 웹캠에서 오는 이미지 그리기를 최적화하는 것입니다. 이미지는 QVideoFrame으로 제공되며 현재 QImage에로드되고 거기에서 가져옵니다. 이 솔루션은 정상적으로 작동하지만 QImage 그리기는 X11에서 매우 느립니다. 하나의 이미지를 그리는 데는 약 20ms가 걸리지 만 많은 프레임처럼 느껴지지는 않습니다. 그러나 모든 프레임에서이 작업을 수행하면이 컷이 카메라 화 된 프레임의 절반이됩니다.QPainter 도면 최적화 및 QVideoFrame을 QPixMap으로 바로 변환
약간의 연구와 테스트를했는데, X11에서 QPixMaps를 그리는 작업은 QImages를 그리는 것보다 약 10 배 빠르게 수행 할 수 있습니다.
이 QPixMap에 QImage 변환이 작동하지만 변환이 그림처럼 느린 :
이 도면 프로세스가 현재 내가 지금까지 시도 무엇
을 수행하는 방법이다 Qimageif(mVFcurrentFrame.map(QAbstractVideoBuffer::ReadOnly)) { QImage image(mVFcurrentFrame.bits(), mVFcurrentFrame.width(), mVFcurrentFrame.height(), mVFcurrentFrame.bytesPerLine(), imageFormat); painter->drawImage(0,0,image); //Takes about 20ms mVFcurrentFrame.unmap(); }
QPixMap :: loadFromData()를 사용하여 QVideoMap을 곧바로 QPixMap에로드하면 작동하지 않을 수 있습니다.
QPixMap :: loadFromData() 메서드를 사용하여 비디오 프레임을로드하려고 시도했지만 지금까지는 작동하지 못했습니다.
이것이 가능하지 않다면 QImage를 QPixMap 변환으로 스레드하거나 다른 방법으로 드로잉을 최적화 할 수 있습니까?
https://blog.qt.digia.com/blog/2008/10/ 22/so-long-and-thanks-for-blit /) * 이미지의 형식이 올바른 경우 *. 서버가 로컬 인 경우 pixmap의 메모리가 서버와 공유되기 때문입니다. 대부분 이미지의 형식이 화면 형식과 일치하지 않습니다. –