2016-10-08 4 views
0

필요한 종속성을 설치 한 후 OpenCV 2.4.13을 설치했으며 C++ 프로그래밍을 위해 Qt Creator 5.7에서 실행 중입니다. 몇 가지 자습서를 따라 나는 스틸 이미지를로드하고 처리 할 수있었습니다. 내가 예를 들어, 이력서 :: VideoCapture를 사용하려고 때 :OpenCV C++은 VideoCapture 아래에 Ubuntu 16.04에 비디오를로드하지 않습니다.

cv::VideoCapture cap; 
cap.open("<File location/file name>"); 

또는 :

cv::VideoCapture("<File location/file name"); 

cap.isOpened()는 항상 false를 돌려줍니다. 이것을 무시하고 Mat, read, imshow 등으로 더 진행하려고해도 프로그램이 충돌합니다. 이미 파일로드에 대한 모든 시도를했습니다. *char을 지정하고 프로젝트 디렉토리에있는 비디오 파일을 더 쉽게 배치하고 아무 것도 작동하지 않으면 인수로 std::string을 부여했습니다. 나는 두 개의 다른 .mp4 파일을 .mov 파일과 함께 보았고 cube4.avi 파일은 openCV 예제의 "samples"폴더에 있습니다. 이 파일들은 모두 내 VLC에서 완벽하게 재생됩니다. 이미 QtWidgets 프로젝트와 plainCpp 프로젝트를 사용하여 Qt에서 시도해 보았습니다. 결코 작동하지 않습니다. 이 버그를 검색 한 후에이 버그가 매우 반복적으로 발생하는 것을 보았습니다. 그러나 방금 .dll 파일을 프로젝트에 추가하는 것과 관련하여 Windows 용 솔루션을 찾았습니다. 하지만 리눅스는 DLL을 사용하지 않으므로 우분투에서 무엇을해야합니까?

답변

1

이 문제를 해결하는 방법을 알아 냈습니다. 비슷한 문제가있는 모든 이들과 공유하고 싶습니다. 우선 FFmpeg 설치는 ​​OpenCV 컴파일에서 무시 된 알 수없는 이유 때문이었습니다. FFmpeg는 비디오를 읽고 쓰는 데 필요하기 때문에 OpenCV는 이러한 작업을 수행 할 수 없었고 그에 대한 오류 또는 경고 메시지를 표시하지 않았습니다. 어쨌든 나는 처음부터 다시 모든 것을 시도하기로 결심했다. 명심하십시오 : FFmpeg 만 다시 설치하면 문제가 해결되지 않습니다. 그 후에는 cmake을 실행하고 OpenCV를 다시 컴파일하고 설치해야합니다. FFmpeg의 최신 버전을 저장소에서 다운로드하여 컴파일하고 다시 설치했습니다. 다시 OpenCV의 컴파일하려고하지만,는 FFmpeg (Libav) 메시지와 함께 .H 파일을 처리 할 때 그것은 항상 15 %에 붙어되었다

<file_name.h> can not be used when making a shared object; recompile with -fPIC 

그래서 내가 검색과 약간의 노력으로 나는 것을 발견을 make을하기 전에 다음과 같은 구성 라인으로는 FFmpeg 컴파일 할 필요가 있었다 :

.\configure --enable-pic --enable-shared 

일부는 FFmpeg 설치 자습서는 "구성"이후에 더 많은 명령을 포함합니다. 그런 다음 FFmpeg를 컴파일하고 다시 설치하고 OpenCV를 컴파일하고 다시 설치했습니다. 그 후, 동영상을합니다 (cap.isOpened()가 더 이상 거짓 없었다)을로드 할 수 있었다, 그러나 그럼에도 불구하고 나는 모든 비디오에 대한 다음과 같은 오류가 발생했다 그들은 읽을하지 않은 :

Assertion desc failed at libswscale/swscale_internal.h:674 

내가 해결하기 위해 찾은 방법 이것은 최신 안정적인 FFmpeg 버전을 최신으로 다운로드하는 대신 다시 컴파일하고 OpenCV를 다시 컴파일 한 다음 성공적으로 다운로드했습니다! 이제 비디오 파일을로드하고 쓸 수 있습니다. 아직 여러 코덱으로 테스트하지 않았습니다. 마지막 안정 버전을 다운로드

  • : 나는

    모든 것을 요약 ... 우리가 모든 거즈를 처리 할 필요가 없습니다 그래서 그들은 모든 것을 OpenCV의 사전 컴파일 된 버전을 출시하지 않는 이유 궁금해 FFmpeg의. 작동하지 않는 경우 오래된 것을 사용해보십시오. (나는 2.8.6을 사용하고 있는데, 지금은 가장 안정적이다.)(

.\configure --enable-pic --enable-shared

make

sudo make install

0

내가 "opencv3.2.0-DEV"대신 "opencv3.2.0"를 설치하여 문제를 해결;
pip install opencv-python은 OPENCV를 설치하기에 충분하지 않습니다.

관련 문제