2013-02-01 2 views
2

을 사용하여이 질문을 "충분하지 않은 연구"로 끝낼 수 있음을 알았습니다. 그러나 2 일 동안 인터넷 검색을했는데 결정적인 답을 찾지 못했습니다.Opencv/ffmpeg를 사용하여

글쎄, C++로 작성된 것이 아니라 창을 생성하는 응용 프로그램이 있습니다.이 응용 프로그램은 dll과 함께 c- 인터페이스를 가질 수 있습니다. 이제 OpenCV의 기능을 사용하여 확장 할 DLL을 시작했습니다. 응용 프로그램에서 /로 이미지 데이터를 전달하는 것은 거의 불가능합니다 (C 문자열을 double 값으로 직접 전달할 수 있음 - 드로잉을 위해 하드 드라이브를 사용하면 실시간 이미지 조작시 너무 느려지 게됩니다.)

I am lo opencv가 직접 이미지 데이터를 윈도우에 끌어다 놓는 것을 oking합니다. 나는 창 핸들을 쉽게 얻을 수 있기 때문에 openCV가 다른 창 위로 데이터를 가져 오거나 다른 창으로 데이터를 가져올 수 있습니까? 어떤 라이브러리 (FFMPEG 등)에서도 가능합니까?

답변

3

Yes, 가능하지만 이상적입니다. use GDI to draw on top of the other window (just convertIplImage to HBITMAP) 할 수 있습니다. Another technique은 국경없는 테두리 번호layered window과 같은 도면을 작성하는 것입니다.

더 쉬운 방법은 당신이 두 응용 프로그램을 소유하고 있기 때문에, 결국, 표준 C 데이터 유형을 사용하여 사이의 IplImage를 전달하는 함수를 작성,입니다 IplImage는 이러한 표준 유형에서 구축 된 데이터 형식에 불과하다 . 여기

는 5 개 표준 매개 변수에 IplImage를 분해하는 방법이다 :

  • 크기 (INT는를 INT) 이미지 (너비/높이)의;
  • (int) 이미지의 비트 심도;
  • 채널 수 (int);
  • 그리고 이미지의 (서명되지 않은 char *) 픽셀;

반대편에서 이러한 매개 변수를받은 후에 궁금해 할 수 있습니다. how do I assemble a IplImage from scratch?cvCreateImageHeader() 다음으로 cvSetData()을 호출하십시오.

+0

hmm 문제는 다른 응용 프로그램이 해석되고 이미지의 생성을 테스트 한 것입니다. 심지어 배열의 빌드에서도 지옥처럼 느립니다. 당신은 1 초에 백 번 할 수있는 것이 아닙니다. 실제로는 파일에서 이미지 데이터를 읽는 build-in-function을 사용하는 것보다 여러 배 느립니다. – paul23

+0

@ paul23 해결 했습니까? – FelikZ

관련 문제