Pendahuluan
Artikel ini akan fokus pada perakitan dan pemasangan
OpenCV 4 untuk
C / C ++ ,
Python 2 dan
Python 3 dari file sumber dengan tambahan modul
CUDA 10 pada
Windows .
Saya mencoba memasukkan di sini semua seluk-beluk dan nuansa yang mungkin Anda temui selama instalasi, dan yang tidak tertulis dalam
manual resmi .

Majelis diuji untuk:
- Windows 8.1 + Visual Studio 2017 + Python 2/3 + CUDA 10.0 + GeForce 840m
- Windows 10 + Visual Studio 2019 + Python 2/3 + CUDA 10.0 + GeForce GTX 1060
Perhatian! Build tidak akan berfungsi untuk versi
OpenCV 4.0.1 dan / atau
CUDA di bawah versi 10.
CUDA 9 dan di bawah ini didukung oleh
OpenCV 3 .
Apa yang perlu Anda instal
Alat-alat berikut digunakan dalam perakitan saya:
- CMake 3.15
- MS Visual Studio 2019 64-bit + CMake C ++ tools untuk Windows
- Python 3.7.3 64-bit + NumPy 64-bit
- Python 2.7.16 64-bit + NumPy 64-bit
- CUDA 10.0
- CuDNN 7.6.2
- OpenCV 4.1.1 dan OpenCV-contrib-4.1.1
Instalasi
Karena instalasi dilakukan melalui perintah konsol, Anda harus hati-hati dan akurat melakukan semua langkah. Juga, jika perlu, ubah jalur instalasi ke jalur Anda sendiri.
Pertama, Anda perlu menginstal perangkat lunak yang diperlukan, dan
Visual Studio harus diinstal sebelum
CUDA :
Setelah menginstal semua komponen, pastikan jalur untuk
CMake, Visual Studio, Python, CUDA, CuDNN ditulis dalam variabel
PATH, PYTHONPATH, CUDA_PATH dan
cudnn, masing-masing.
Selanjutnya, unduh arsip sumber
opencv-4.1.1 dan
opencv-contrib-4.1.1 ke lokasi yang diinginkan (dalam kasus saya, ini adalah
C: \ OpenCV \ ).
git clone https://github.com/opencv/opencv.git -b "4.1.1" git clone https://github.com/opencv/opencv_contrib.git -b "4.1.1"

Buat
build / folder di dalam opencv-4.1.1.

Selanjutnya, kami membuat file perakitan menggunakan
cmake . Kami akan menggunakan versi konsol
cmake , karena
cmake-gui membingungkan tipe-tipe beberapa variabel (misalnya,
OPENCV_PYTHON3_VERSION ) dan, sebagai akibatnya, menghasilkan file secara tidak benar.
Kami membuka konsol di sepanjang jalur
C: \ OpenCV \ dan mendaftarkan variabel.
set "opencvSource=opencv-4.1.1" set "opencvExtraModules=opencv_contrib-4.1.1/modules" set "opencvBuild=%opencvSource%\build" set "compiler=Visual Studio 16 2019" set "buildType=Release"
Catatan Untuk
Visual Studio 2017, generator ditulis sebagai "
Visual Studio 15 2017 Win64 " dan tanpa tanda
-A .
Anda juga dapat secara eksplisit menentukan pustaka Python untuk python 2 dan python 3 jika kolektor tidak dapat menemukannya secara otomatis.
set "python2_executable=C:/Python27/python.exe" set "python2_include_dir=C:/Python27/include" set "python2_library=C:/Python27/libs/python27.lib" set "python2_numpy_include_dirs=C:/Python27/Lib/site-packages/numpy/core/include" set "python2_packages_path=C:/Python27/Lib/site-packages" set "python3_executable=C:/Users/root/Anaconda3/python.exe" set "python3_include_dir=C:/Users/root/Anaconda3/include" set "python3_library=C:/Users/root/Anaconda3/libs/python37.lib" set "python3_numpy_include_dirs=C:/Users/root/Anaconda3/lib/site-packages/numpy/core/include" set "python3_packages_path=C:/Users/root/Anaconda3/Lib/site-packages"
Catatan Harap dicatat bahwa perpustakaan
NumPy harus kedalaman bit yang sama dengan
OpenCV . Memeriksa ini mudah:
import numpy.distutils.system_info as sysinfo print(sysinfo.platform_bits)
Hasilkan file rakitan dengan menggunakan perintah panjang di bawah ini. Jika generasi atau kesalahan tidak berhasil setelah menjalankan perintah, pembuatan ulang harus dilakukan dengan membersihkan semua file dalam
build / dan
.cache / .
cmake ^ -B"%opencvBuild%/" ^ -H"%opencvSource%/" ^ -G"%compiler%" ^ -Ax64 ^ -DCMAKE_BUILD_TYPE=%buildType% ^ -DBUILD_opencv_world=ON ^ -DINSTALL_TESTS=OFF ^ -DINSTALL_C_EXAMPLES=OFF ^ -DBUILD_EXAMPLES=OFF ^ -DOPENCV_EXTRA_MODULES_PATH="%opencvExtraModules%/" ^ -DBUILD_PROTOBUF=ON ^ -DBUILD_opencv_python_bindings_generator=ON ^ -DWITH_CUDA=ON ^ -DCUDA_FAST_MATH=ON ^ -DWITH_CUBLAS=ON ^ -DCUDA_ARCH_PTX=7.5 ^ -DBUILD_opencv_python2=ON ^ -DPYTHON2_EXECUTABLE="%python2_executable%" ^ -DOPENCV_PYTHON2_VERSION=2.7.16 ^ -DPYTHON2_INCLUDE_DIR="%python2_include_dir%" ^ -DPYTHON2_LIBRARY="%python2_library%" ^ -DPYTHON2_NUMPY_INCLUDE_DIRS="%python2_numpy_include_dirs%" ^ -DPYTHON2_PACKAGES_PATH="%python2_packages_path%" ^ -DBUILD_opencv_python3=ON ^ -DPYTHON3_EXECUTABLE="%python3_executable%" ^ -DOPENCV_PYTHON3_VERSION=3.7.3 ^ -DPYTHON3_INCLUDE_DIR="%python3_include_dir%" ^ -DPYTHON3_LIBRARY="%python3_library%" ^ -DPYTHON3_NUMPY_INCLUDE_DIRS="%python3_numpy_include_dirs%" ^ -DPYTHON3_PACKAGES_PATH="%python3_packages_path%"
Arti beberapa bendera- BUILD_opencv_world - modul opsional yang berisi salinan semua perpustakaan yang dipilih selama instalasi. Ini berguna ketika berkembang dalam C ++ , karena alih-alih menghubungkan banyak dependensi opencv , Anda dapat menghubungkan satu dependensi opencv_world411.lib ke proyek
- INSTALL_EXAMPLES / INSTALL_TESTS - memasang contoh / tes kode pembuka
- CUDA_FAST_MATH, WITH_CUBLAS - modul tambahan untuk CUDA , yang dirancang untuk mempercepat perhitungan
- CUDA_ARCH_PTX - versi instruksi PTX untuk meningkatkan kinerja komputasi
- OPENCV_EXTRA_MODULES_PATH - jalur ke modul tambahan dari opencv-contrib (diperlukan untuk CUDA )
- BUILD_PROTOBUF - agar beberapa modul opencv berfungsi, Protobuf diperlukan (pengumpul opencv akan menetapkan BUILD_PROTOBUF = ON anyway )
Setelah sekitar 10 menit, informasi perakitan dan baris terakhir "
Mengonfigurasi selesai " dan "
Menghasilkan selesai " akan muncul di konsol. Kami memeriksa semua informasi, terutama bagian
NVIDIA CUDA, Python 2, Python 3 .

Selanjutnya, kami kumpulkan solusinya. Mungkin perlu beberapa jam untuk membangun, tergantung pada prosesor dan versi
Visual Studio Anda .
cmake --build %opencvBuild% --target ALL_BUILD --config Release
Instal solusinya.
cmake --build %opencvBuild% --target INSTALL --config Release
Setelah instalasi berhasil, buat variabel sistem
OPENCV_DIR dengan nilai
C: \ OpenCV \ opencv-4.1.1 \ build \ install \ x64 \ vc15 \ bin dan tambahkan juga ke
PATH .
Tes
Kami akan menguji fungsionalitas
OpenCV dengan modul
CUDA menggunakan contoh sederhana dari perkalian matriks.
Hubungkan OpenCV ke proyek Visual Studio- Setel tipe rilis / x64 build (untuk Debug, build OpenCV dengan flag Debug)
- Properti Proyek โ C / C ++ โ Umum โ Tambahkan baris โC: \ OpenCV \ opencv-4.1.1 \ build \ install \ includeโ ke Direktori Sertakan Tambahan
- Properti Proyek โ Linker โ Umum โ Tambahkan baris โC: \ OpenCV \ opencv-4.1.1 \ build \ install \ x64 \ vc16 \ libโ ke Direktori Perpustakaan Tambahan
- Properti Proyek โ Linker โ Umum โ Tambahkan "; opencv_world411.lib" ("; opencv_world411d.lib" untuk Debug) ke akhir Ketergantungan Tambahan
Contoh Python 3 import numpy as np import cv2 as cv import time rand = np.random.random((1024, 1024)).astype(np.float32) h_array1 = np.stack([rand, rand],axis=2) h_array2 = h_array1 d_array1 = cv.cuda_GpuMat() d_array2 = cv.cuda_GpuMat() d_array1.upload(h_array1) d_array2.upload(h_array2) start = time.time() cv.cuda.gemm(d_array1, d_array2, 1, None, 0, None, 1) end = time.time() print("Time elapsed:", end - start, "sec")
Output konsol
Time elapsed: 0.3130002021789551
Contoh C ++ #include <iostream> #include <opencv2/opencv.hpp> #include <opencv2/cudaarithm.hpp> using namespace std; using namespace cv; using namespace cv::cuda; int main() { Mat h_array1 = Mat::ones(1024, 1024, CV_32FC2); Mat h_array2 = Mat::ones(1024, 1024, CV_32FC2); Mat h_array3 = Mat::zeros(1024, 1024, CV_32FC2); Mat h_result; GpuMat d_array1, d_array2, d_array3, d_result; d_array1.upload(h_array1); d_array2.upload(h_array2); const clock_t begin_time = clock(); cuda::gemm(d_array1, d_array2, 1.0, d_array3, 0.0, d_result); cout << "Time elapsed: " << (float(clock() - begin_time) / CLOCKS_PER_SEC) << " sec" << endl; d_result.download(h_result); return 0; }
Output konsol
Time elapsed: 0.354
Hapus
Untuk menghapus
OpenCV , Anda perlu menjalankan perintah.
cmake --build %opencvBuild% --target uninstall --config Release
dan hapus variabel sistem
OPENCV_DIR dan hapus path ke OpenCV dari
PATH .
Kesimpulan
Pada artikel ini, kami memeriksa instalasi
OpenCV 4 untuk
Windows 10 . Algoritma ini diuji pada
Windows 8.1 dan
Windows 10 , tetapi, secara teori, dapat dibangun di
Windows 7 . Untuk informasi lebih lanjut, lihat daftar sumber di bawah ini.
PS Akhirnya, kami akan membawa semua perintah instalasi ke dalam satu file
.bat bagi mereka yang ingin mengotomatiskan instalasi.
install_opencv411.bat cd C:\OpenCV git clone https://github.com/opencv/opencv_contrib.git -b "4.1.1" git clone https://github.com/opencv/opencv.git -b "4.1.1" ren opencv opencv-4.1.1 ren opencv_contrib-4.1.1 set "opencvSource=opencv-4.1.1" set "opencvExtraModules=opencv_contrib-4.1.1/modules" set "opencvBuild=%opencvSource%\build" set "compiler=Visual Studio 16 2019" set "buildType=Release" set "python2_executable=C:/Python27/python.exe" set "python2_include_dir=C:/Python27/include" set "python2_library=C:/Python27/libs/python27.lib" set "python2_numpy_include_dirs=C:/Python27/Lib/site-packages/numpy/core/include" set "python2_packages_path=C:/Python27/Lib/site-packages" set "python3_executable=C:/Users/root/Anaconda3/python.exe" set "python3_include_dir=C:/Users/root/Anaconda3/include" set "python3_library=C:/Users/root/Anaconda3/libs/python37.lib" set "python3_numpy_include_dirs=C:/Users/root/Anaconda3/lib/site-packages/numpy/core/include" set "python3_packages_path=C:/Users/root/Anaconda3/Lib/site-packages" cmake ^ -B"%opencvBuild%/" ^ -H"%opencvSource%/" ^ -G"%compiler%" ^ -Ax64 ^ -DCMAKE_BUILD_TYPE=%buildType% ^ -DBUILD_opencv_world=ON ^ -DINSTALL_TESTS=OFF ^ -DINSTALL_C_EXAMPLES=OFF ^ -DBUILD_EXAMPLES=OFF ^ -DOPENCV_EXTRA_MODULES_PATH="%opencvExtraModules%/" ^ -DBUILD_PROTOBUF=ON ^ -DBUILD_opencv_python_bindings_generator=ON ^ -DWITH_CUDA=ON ^ -DCUDA_FAST_MATH=ON ^ -DWITH_CUBLAS=ON ^ -DCUDA_ARCH_PTX=7.5 ^ -DBUILD_opencv_python2=ON ^ -DPYTHON2_EXECUTABLE="%python2_executable%" ^ -DOPENCV_PYTHON2_VERSION=2.7.16 ^ -DPYTHON2_INCLUDE_DIR="%python2_include_dir%" ^ -DPYTHON2_LIBRARY="%python2_library%" ^ -DPYTHON2_NUMPY_INCLUDE_DIRS="%python2_numpy_include_dirs%" ^ -DPYTHON2_PACKAGES_PATH="%python2_packages_path%" ^ -DBUILD_opencv_python3=ON ^ -DPYTHON3_EXECUTABLE="%python3_executable%" ^ -DOPENCV_PYTHON3_VERSION=3.7.3 ^ -DPYTHON3_INCLUDE_DIR="%python3_include_dir%" ^ -DPYTHON3_LIBRARY="%python3_library%" ^ -DPYTHON3_NUMPY_INCLUDE_DIRS="%python3_numpy_include_dirs%" ^ -DPYTHON3_PACKAGES_PATH="%python3_packages_path%" cmake --build %opencvBuild% --target ALL_BUILD --config Release cmake --build %opencvBuild% --target INSTALL --config Release
Daftar sumber
- docs.opencv.org/4.1.1/d3/d52/tutorial_windows_install.html
- www.learnopencv.com/install-opencv-4-on-windows
- jamesbowley.co.uk/build-opencv-4-0-0-with-cuda-10-0-and-intel-mkl-tbb-in-windows
- lightbuzz.com/opencv-cuda
- Bab โMembangun Perpustakaan dari Sumberโ buku Visi Komputer Dipercepat Secara Langsung dengan OpenCV dan CUDA