2012-04-26 4 views
2

python (Python (x, y) 배포판) 응용 프로그램에서 opencv (pythonxy 설치 프로그램과 함께 버전 2.3.1)를 사용하여 비디오 파일을 열 수없는 문제가 있습니다. 파일은 다소 문제가있는 형식 (일반 MPEG-2이어야하지만 재생시 문제가 있음)이 있지만 ffdshow 비디오 디코더가 처리합니다.python opencv에서 C++ 응용 프로그램에서 읽는 파일을 처리하는 방법은 무엇입니까?

내 시스템에있는 opencv의 인스턴스가 다르면 파일을 다르게 처리하기 때문에 python 디렉토리에 설치된 버전이 파일을 읽지 못하는 것입니다.

다른 응용 프로그램과 동일한 방식으로 파이썬 응용 프로그램에서 비디오 파일을 처리하는 방법을 알고 있습니까?

다음 코드 :

import cv2.cv as cv 
capture = cv.CaptureFromFile("film.mpeg") 

print cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_POS_MSEC) 
print cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_FRAME_COUNT) 
print cv.GetCaptureProperty(capture, cv.CV_CAP_PROP_CONVERT_RGB ) 

cv.SetCaptureProperty(capture, cv.CV_CAP_PROP_POS_MSEC, 50) 

frame = cv.QueryFrame(capture) 
cv.SaveImage("img.jpg",frame) 

반환

0.0 
0.0 
0.0 

및 잘못된 이미지 파일을 기록합니다.

동일한 컴퓨터에서 같은 형식의 파일을 열 수있는 opencv (동일한 버전 번호 2.3.1)를 사용하는 C++ 응용 프로그램이 있습니다. 두 응용 프로그램 라이브러리를 나열한 후, 나는 C++ 하나가 ffdshow.ax을로드한다는 것을 발견했다. (이름을 바꾸지 않고 아래의 3 번 지점을 보자.) 반면 파이썬은 그렇지 않다. 내가 파이썬 응용 프로그램은

  • 가 좀 컴파일 옵션에 문제가있을 수 있습니다 생각 다른 형식으로, 다른 파일에 대한 정확한 결과를 얻을 수 있다는 것을 확인했다

    1. : 내가 지금까지했던 어떤

      python에서 opencv dll 파일을 열었으므로 opencv dll을 C:\Python27\Lib\site-packages으로 바꾸고 작동중인 응용 프로그램에서 동일한 결과를 얻었습니다.

    2. ffdshow.ax의 파일 이름을 ffdshow.ax_으로 변경했으며 C++ 응용 프로그램은이 파일을로드하지 않았지만 여전히 작동 중이므로 저를 혼란스럽게합니다.
  • 답변

    0

    그 프로젝트로 돌아 왔습니다. 이 질문의 대답 :

    OpenCV 2.4 VideoCapture not working on Windows

    을 도왔다. 내가해야 할 일은 3rdparty/ffmpeg 디렉토리를 PATH 환경 변수에 추가하고 dll 파일 이름에 opencv 버전 번호를 추가하는 것입니다 (opencv_ffmpeg.dll -> opencv_ffmpeg246.dll)

    관련 문제