Anaconda沒有使用ffmpeg編譯的opencv 2.4.13,所以如果你想使用VideoCapture,那麼需要編譯opencv。 描述的步驟名單我也跟着(嚴格Fedora用戶):
,刪除先前的OpenCV
sudo yum remove opencv
安裝Python 2.7
sudo yum install python2.7
*請使用你的Python 2.7包裹名字。的ffmpeg
安裝從他們的網站
下載壓縮包並解壓它。 https://www.ffmpeg.org/download.html
tar -xvf ffmpeg-3.3.0.tar.gz
cd ffmpeg-3.3.0
./configure --prefix=/usr/local --enable-gpl --enable-swscale --enable-shared --enable-postproc --enable-avfilter-lavf
* remove選項--enable-avfilter-lavf如果提示錯誤。
sudo make
sudo make install
安裝的OpenCV 2.4.13
下面包將解決SYS/videoio.h錯誤:
sudo dnf install pjproject-devel.x86_64 2.4.5-8.fc26 ptlib-devel.x86_64 2.10.10-16.fc24 pjproject.x86_64 2.4.5-8.fc26 ptlib.x86_64 2.10.10-16.fc24
然後安裝這些軟件包:
sudo yum install libpng-devel libjpeg-turbo-devel jasper-devel openexr-devel libtiff-devel libwebp-devel libdc1394-devel libv4l-devel gstreamer-plugins-base-devel gtk2-devel tbb-devel eigen3-devel gstreamer1-libav gstreamer1-plugins-base-devel java-1.8.0-openjdk-devel.x86_64 python2-numpy.x86_64 ffmpeg-devel.x86_64 ffmpeg-libs.i686 ffmpeg.x86_64 libavdevice.i686 libpng-devel libjpeg-turbo-devel jasper-devel openexr-devel libtiff-devel libwebp-devel libdc1394-devel libv4l-devel gstreamer-plugins-base-devel gtk2-devel tbb-devel eigen3-devel gstreamer1-libav gstreamer1-plugins-base-devel gtk+extra-devel.x86_64 gtk+-devel.i686 cmake pkg-config libgtk libavcodec libavformat libswscale swig
下載您選擇的OpenCV例如2.4.13從github(選擇2.4.13從分支 - >標籤 - > 2.4。13則選擇了從克隆下載):
https://github.com/opencv/opencv
http://opencv.org/releases.html
提取焦油
tar -xvf opencv-2.4.13.3.tar.gz
cd opencv-2.4.13.3
mkdir build; cd build;
現在CMake的:
sudo cmake -D CMAKE_BUILD_TYPE=Release -D CMAKE_INSTALL_PREFIX=/usr/local -D WITH_FFMPEG=1 -D BUILD_NEW_PYTHON_SUPPORT=ON -D WITH_QT=OFF -D WITH_V4L=OFF -D CMAKE_SHARED_LINKER_FLAGS=-Wl,-Bsymbolic -DLD_LIBRARY_PATH=/usr/local/lib/ -DPYTHON_INCLUDE_DIR=$(python -c "from distutils.sysconfig import get_python_inc; print(get_python_inc())") -DPYTHON_LIBRARY=$(python -c "import distutils.sysconfig as sysconfig; print(sysconfig.get_config_var('LIBDIR'))") -DCUDA_NVCC_FLAGS="-ccbin /home/rishabh/gcc-4.9.4-x86_64/bin/gcc" -D WITH_CUDA=OFF -D BUILD_opencv_gpu=OFF -D BUILD_opencv_gpuarithm=OFF -D BUILD_opencv_gpubgsegm=OFF -D BUILD_opencv_gpucodec=OFF -D BUILD_opencv_gpufeatures2d=OFF -D BUILD_opencv_gpufilters=OFF -D BUILD_opencv_gpuimgproc=OFF -D BUILD_opencv_gpulegacy=OFF -D BUILD_opencv_gpuoptflow=OFF -D BUILD_opencv_gpustereo=OFF -D BUILD_opencv_gpuwarping=OFF -D WITH_OPENCL=OFF ..
解釋:
包含'gpu'文本的標誌是用於關閉gpu編譯,如果你想用gpu進行編譯然後將它們設置爲ON。但是gpu將需要cuda包和一個圖形卡才能工作。
這個標誌也可以被忽略,因爲我們沒有用gpu編譯,但它也沒有傷害我保持它。
-DCUDA_NVCC_FLAGS = 「 - ccbin /home/rishabh/gcc-4.9.4-x86_64/bin/gcc」
如果你正面臨在cmake的腳本錯誤然後做these-
開放文件的OpenCV-2.4.13.3/cmake的/ OpenCVPackaging.cmake
- 添加此
set(OPENCV_VCSVERSION "2.4.13.3")
- 這條線以上
set(CPACK_PACKAGE_VERSION "${OPENCV_VCSVERSION}")
註釋掉阻止cmake並無用的相應行,無論在控制檯上拋出哪個文件名。
例如opencv-2.4.13.3/cmake/OpenCVDetectCXXCompiler.cmake
我有80-86行問題,所以我評論說出來,因爲這些變量沒有在別處做任何事情。
cmake的成功後,繼續讓一步 -
sudo make
sudo make install
如果你正面臨任何鏈接錯誤,那麼你將必須安裝相應的依賴關係或設置cmake的標誌爲OFF,如果你不打算安裝這些模塊。
後安裝步驟:
echo 'export LD_LIBRARY_PATH=/usr/local/lib/:$LD_LIBRARY_PATH' >> ~/.bashrc
source ~/.bashrc
現在添加
/usr/local/lib/
到以下文件:
/etc/ld.so.conf
/etc/ld.so.conf.d/opencv.conf
現在運行
sudo ldconfig
對於阿納康達PATH變量衝突
移除水蟒路徑從在〜/ .bashrc也
出口PATH =的/ usr/lib64下/ QT-3.3/bin路徑變量和編輯:在/ usr/lib64的/ ccache的:在/ usr/local/bin目錄:在/ usr/local/sbin中:在/ usr/bin中:/ usr/sbin目錄中:/ opt/CUDA /斌:/home/rishabh/.local/bin:/家庭/ RISHABH/bin:/ opt/cuda/bin/
現在註銷並登錄到fedora。
試驗下面執行:
python
import cv2
cv2.__version__
video = cv2.VideoCapture("your small video.mp4")
okay, frame = video.read()
print("VideoCapture Read Success - ")
print(okay)
輸出 -
真 - 視頻閱讀成功
假 - OpenCV的尚未與ffmpeg的正確編譯。