2009-08-25 2 views
0

바로 지금, 내가하려고하는 것은 본질적으로 directX (더 정확하게는 direct3D)를 사용하는 소프트웨어 인 Axis IP 카메라의 스트리밍 이미지를 표시하는 새로운 GUI를 만드는 것입니다. .Direct3D와 Axis를 결합하여 여러 개의 IP 카메라 GUI 만들기

당분간 전체 프로그램의 흐름은 다음과 같을 것이라고 생각했습니다. 1. 스트리밍 이미지를 얻기 위해 Axis 프로그램 가져 오기 2. 이미지를 Direct3D 프로그램에 전달합니다. 3. 화면에 프로그램을 표시하십시오.

현재 저는 (테스트 용) avi 비디오에서 비디오 프레임을로드하고 표시하는 다소 기본적인 Direct3D 앱을 만들었습니다. DirectX를 사용하여 비디오에서 직접 이미지를로드하는 방법을 모르므로 OpenCV를 사용하여 비디오의 프레임을 저장하고 DX를 업로드하십시오. 아주 느린.

는 지금은 일부 불분명 한 일이 있습니다 1. C에서 작동하는 축 프로그램을 가져 오는 방법을 ++ (거 찾아 예 후, prolly 별거)를 축 IP 카메라에서 직접 이미지를 업로드하는 방법 (2) 프로그램.

여러분, 제 프로그램을보다 효율적으로 만드는 방법에 대한 권장 사항이나 제안 사항이 있으십니까? 아무것도 알려주지 않았어.

답변

0

Directshow를 사용하고 압축 된 비디오 데이터를 직접 Direct3D 텍스처로 직접 복사하는 사용자 정의 렌더러를 원거리에 추가하는 것이 더 빠릅니다.

해당 텍스처를 이중 버퍼링 할 가치가 있습니다. 즉, 텍스처 0을 표시하고 텍스처 1도 업로드 한 다음 새 프레임을 사용할 수있게되면 2를 스왑합니다 (예 : 텍스처 0에 업로드하는 동안 텍스처 1 표시).

이 방법을 사용하면 렌더링 된 프레임 속도에서 비디오 프레임 속도를 분리 할 수 ​​있습니다. 그러면 렌더링 된 프레임 속도가 떨어 지므로 처리하기가 쉽습니다.

+0

좋습니다. 나는 DirectShow를 사용하는 것을 고려하고있다. 그러나 나는 direct3D와 Axis 프로그램을 사용하는 것을 선호한다. 만약을 대비해서 DirectShow를 배울 것입니다. – Sodrohu

0

(IDirect3DTexture9::LockRect을 사용하여) Direct3D 텍스처의 전체 업데이트를 사용하며 매우 빠르게 작동합니다. 프로그램의 어떤 부분이 느려지 는가? http://sourceforge.net/projects/ipsi/

그것은 (사용 가능한 경우) 이미지 및 제어 카메라 줌과 회전을 캡처에 사용할 수 있습니다 축에서 캡처 이미지의 경우

+0

잘 모르겠습니다 만, OpenCV가 프레임을 이미지에 저장하고 D3D가 나중에 이미지를 업로드하고 렌더링하는 부분이라고 추측합니다. 아직도 느린 것 같습니다. 하드웨어가 아닌 소프트웨어 렌더링을 사용하고 있기 때문에 그래픽 카드가 없습니다. – Sodrohu

0

는 IPSI의 C++ 라이브러리를 사용할 수있다 캠.

+0

실제로 Axis에서 제공하는 SDK를 사용하여 이미지를 추출하는 것을 선호합니다. 몇 가지 문서를 읽고 VC++의 샘플을 통해 실행합니다. 더 많은 작업이 실행되도록해야합니다. 또한 동료로부터 MFC 프로그램을 가져와 Axis 카메라를 대화 창에 표시합니다. 내 프로그램과 호환되도록 변환해야합니다. 하지만 고마워요. 일이 내 방식대로 진행되지 않는 경우 항상 백업이 있습니다. – Sodrohu

관련 문제