{"id":293509,"date":"2019-08-17T15:01:40","date_gmt":"2019-08-17T15:01:40","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=293509"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=293509","title":{"rendered":"\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 OpenCV + CUDA \u043d\u0430 Windows"},"content":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\n<h3>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>  \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e \u0441\u0431\u043e\u0440\u043a\u0435 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 <i>OpenCV 4<\/i> \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438 <i>CUDA 10<\/i> \u043d\u0430 \u041e\u0421 <i>Windows<\/i>.<\/p>\n<p>  \u042f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u044e\u0434\u0430 \u0432\u0441\u0435 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438 \u0438 \u043d\u044e\u0430\u043d\u0441\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u0432 \u0445\u043e\u0434\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u0438 \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 <a href=\"https:\/\/docs.opencv.org\/4.1.1\/d3\/d52\/tutorial_windows_install.html\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0430\u043d\u0443\u0430\u043b\u0435<\/a>.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sz\/2t\/4w\/sz2t4w5o4_ijeltgbajfkopxx0a.jpeg\"><br \/>  <a name=\"habracut\"><\/a><br \/>  \u0421\u0431\u043e\u0440\u043a\u0430 \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0430\u0441\u044c \u0434\u043b\u044f:<\/p>\n<ul>\n<li><i>Windows 8.1 + Visual Studio 2017 + Python 2\/3 + CUDA 10.0 + GeForce 840m<\/i><\/li>\n<li><i>Windows 10 + Visual Studio 2019 + Python 2\/3 + CUDA 10.0 + GeForce GTX 1060<\/i><\/li>\n<\/ul>\n<p>  <b>\u0412\u043d\u0438\u043c\u0430\u043d\u0438\u0435!<\/b> \u0421\u0431\u043e\u0440\u043a\u0430 \u043d\u0435 \u043f\u043e\u0434\u043e\u0439\u0434\u0435\u0442 \u0434\u043b\u044f \u0432\u0435\u0440\u0441\u0438\u0438 <i>OpenCV 4.0.1<\/i> \u0438\/\u0438\u043b\u0438 <i>CUDA <\/i>\u043d\u0438\u0436\u0435 10-\u0439 \u0432\u0435\u0440\u0441\u0438\u0438. <i>CUDA 9<\/i> \u0438 \u043d\u0438\u0436\u0435 \u043f\u043e\u0434\u0434\u0435\u0440\u0436\u0438\u0432\u0430\u0435\u0442\u0441\u044f <i>OpenCV 3<\/i>.<\/p>\n<h3>\u0427\u0442\u043e \u043f\u043e\u0442\u0440\u0435\u0431\u0443\u0435\u0442\u0441\u044f \u0434\u043b\u044f \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438<\/h3>\n<p>  \u0412 \u043c\u043e\u0435\u0439 \u0441\u0431\u043e\u0440\u043a\u0435 \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u043b\u0438\u0441\u044c \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0435 \u0438\u043d\u0441\u0442\u0440\u0443\u043c\u0435\u043d\u0442\u044b:<\/p>\n<ol>\n<li><i>CMake 3.15<\/i><\/li>\n<li><i>MS Visual Studio 2019<\/i> 64-\u0431\u0438\u0442 + \u0441\u0440\u0435\u0434\u0441\u0442\u0432\u0430 <i>CMake \u0421++<\/i> \u0434\u043b\u044f <i>Windows<\/i><\/li>\n<li><i>Python 3.7.3<\/i> 64-\u0431\u0438\u0442 + <i>NumPy<\/i> 64-\u0431\u0438\u0442<\/li>\n<li><i>Python 2.7.16<\/i> 64-\u0431\u0438\u0442 + <i>NumPy<\/i> 64-\u0431\u0438\u0442<\/li>\n<li><i>CUDA 10.0<\/i><\/li>\n<li><i>CuDNN 7.6.2<\/i><\/li>\n<li><i>OpenCV 4.1.1<\/i> \u0438 <i>OpenCV-contrib-4.1.1<\/i><\/li>\n<\/ol>\n<p>  <\/p>\n<h3>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430<\/h3>\n<p>  \u0422\u0430\u043a \u043a\u0430\u043a \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0441\u044f \u0447\u0435\u0440\u0435\u0437 \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u0442\u043e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0432\u043d\u0438\u043c\u0430\u0442\u0435\u043b\u044c\u043d\u043e \u0438 \u0430\u043a\u043a\u0443\u0440\u0430\u0442\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u044f\u0442\u044c \u0432\u0441\u0435 \u0448\u0430\u0433\u0438. \u0422\u0430\u043a\u0436\u0435, \u043f\u0440\u0438 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438, \u043c\u0435\u043d\u044f\u0439\u0442\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u043f\u0443\u0442\u0438 \u043d\u0430 \u0441\u0432\u043e\u0438.<br \/>  \u0414\u043b\u044f \u043d\u0430\u0447\u0430\u043b\u0430 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0440\u0435\u0431\u0443\u0435\u043c\u043e\u0435 \u041f\u041e, \u043f\u0440\u0438\u0447\u0435\u043c <i>Visual Studio<\/i> \u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043b\u0435\u043d\u0430 \u0434\u043e <i>CUDA<\/i>:<\/p>\n<ul>\n<li><a href=\"https:\/\/cmake.org\/download\/\">CMake 3.15<\/a><\/li>\n<li><a href=\"https:\/\/visualstudio.microsoft.com\/ru\/downloads\/\">MS Visual Studio<\/a><\/li>\n<li><a href=\"https:\/\/www.anaconda.com\/distribution\/#download-section\">Python 3.7<\/a> (\u0434\u0438\u0441\u0442\u0440\u0438\u0431\u0443\u0442\u0438\u0432 Anaconda3)<\/li>\n<li><a href=\"https:\/\/developer.nvidia.com\/cuda-downloads\">CUDA 10.0<\/a><\/li>\n<li><a href=\"https:\/\/developer.nvidia.com\/rdp\/form\/cudnn-download-survey\">CuDNN 7.6.2<\/a><\/li>\n<\/ul>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0432\u0441\u0435\u0445 \u043a\u043e\u043c\u043f\u043e\u043d\u0435\u043d\u0442 \u0443\u0431\u0435\u0434\u0438\u0442\u0435\u0441\u044c, \u0447\u0442\u043e \u043f\u0443\u0442\u0438 \u0434\u043b\u044f <i>CMake, Visual Studio, Python, CUDA, CuDNN<\/i> \u043f\u0440\u043e\u043f\u0438\u0441\u0430\u043d\u044b \u0432 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 <i>PATH, PYTHONPATH, CUDA_PATH<\/i> \u0438 <i>cudnn<\/i> \u0441\u043e\u043e\u0442\u0432\u0435\u0442\u0441\u0442\u0432\u0435\u043d\u043d\u043e.<\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0437\u0430\u0433\u0440\u0443\u0436\u0430\u0435\u043c \u0430\u0440\u0445\u0438\u0432\u044b \u0438\u0441\u0445\u043e\u0434\u043d\u0438\u043a\u043e\u0432 <i>opencv-4.1.1<\/i> \u0438 <i>opencv-contrib-4.1.1<\/i> \u0432 \u0436\u0435\u043b\u0430\u0435\u043c\u043e\u0435 \u043c\u0435\u0441\u0442\u043e (\u0432 \u043c\u043e\u0435\u043c \u0441\u043b\u0443\u0447\u0430\u0435 \u044d\u0442\u043e <i>C:\\OpenCV\\<\/i>).<\/p>\n<pre><code class=\"bash\">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\"<\/code><\/pre>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/ao\/q4\/a5\/aoq4a5f0divuygldly6ygfv4btu.jpeg\"><\/p>\n<p>  \u0421\u043e\u0437\u0434\u0430\u0435\u043c \u043f\u0430\u043f\u043a\u0443 <i>build\/<\/i> \u0432\u043d\u0443\u0442\u0440\u0438 opencv-4.1.1.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/25\/g0\/3m\/25g03mnahjar1bn46dw_fmcymly.jpeg\"><\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0441\u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u043c \u0444\u0430\u0439\u043b\u044b \u0441\u0431\u043e\u0440\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e <i>cmake<\/i>. \u041c\u044b \u0431\u0443\u0434\u0435\u043c \u0438\u0441\u043f\u043e\u043b\u044c\u0437\u043e\u0432\u0430\u0442\u044c \u043a\u043e\u043d\u0441\u043e\u043b\u044c\u043d\u044b\u0439 \u0432\u0430\u0440\u0438\u0430\u043d\u0442 <i>cmake<\/i>, \u0442\u0430\u043a \u043a\u0430\u043a <i>cmake-gui<\/i> \u043f\u0443\u0442\u0430\u0435\u0442 \u0442\u0438\u043f\u044b \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0445 (\u043d\u0430\u043f\u0440\u0438\u043c\u0435\u0440, <i>OPENCV_PYTHON3_VERSION<\/i>) \u0438, \u043a\u0430\u043a \u0441\u043b\u0435\u0434\u0441\u0442\u0432\u0438\u0435, \u043d\u0435\u043f\u0440\u0430\u0432\u0438\u043b\u044c\u043d\u043e \u0433\u0435\u043d\u0435\u0440\u0438\u0440\u0443\u0435\u0442 \u0444\u0430\u0439\u043b\u044b.<\/p>\n<p>  \u041e\u0442\u043a\u0440\u044b\u0432\u0430\u0435\u043c \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u043f\u043e \u043f\u0443\u0442\u0438 <i>C:\\OpenCV\\<\/i> \u0438 \u043f\u0440\u043e\u043f\u0438\u0441\u044b\u0432\u0430\u0435\u043c \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u044b\u0435.<\/p>\n<pre><code class=\"cmake\">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\"<\/code><\/pre>\n<p>  <b>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435<\/b>. \u0414\u043b\u044f <i>Visual Studio 2017<\/i> \u0433\u0435\u043d\u0435\u0440\u0430\u0442\u043e\u0440 \u043f\u0438\u0448\u0435\u0442\u0441\u044f \u043a\u0430\u043a \u00ab<i>Visual Studio 15 2017 Win64<\/i>\u00bb \u0438 \u0431\u0435\u0437 \u0444\u043b\u0430\u0433\u0430 <i>-A<\/i>.<\/p>\n<p>  \u0422\u0430\u043a\u0436\u0435 \u043c\u043e\u0436\u043d\u043e \u044f\u0432\u043d\u043e \u0443\u043a\u0430\u0437\u0430\u0442\u044c \u043f\u0438\u0442\u043e\u043d\u043e\u0432\u0441\u043a\u0438\u0435 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0438 \u0434\u043b\u044f python 2 \u0438 python 3 \u043d\u0430 \u0441\u043b\u0443\u0447\u0430\u0439, \u0435\u0441\u043b\u0438 \u0441\u0431\u043e\u0440\u0449\u0438\u043a \u043d\u0435 \u0441\u043c\u043e\u0436\u0435\u0442 \u043d\u0430\u0439\u0442\u0438 \u0438\u0445 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0447\u0435\u0441\u043a\u0438.<\/p>\n<pre><code class=\"cmake\">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\"<\/code><\/pre>\n<p>  <b>\u041f\u0440\u0438\u043c\u0435\u0447\u0430\u043d\u0438\u0435<\/b>. \u041e\u0431\u0440\u0430\u0442\u0438\u0442\u0435 \u0432\u043d\u0438\u043c\u0430\u043d\u0438\u0435 \u043d\u0430 \u0442\u043e, \u0447\u0442\u043e \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a\u0430 <i>NumPy <\/i>\u0434\u043e\u043b\u0436\u043d\u0430 \u0431\u044b\u0442\u044c \u0442\u043e\u0439 \u0436\u0435 \u0440\u0430\u0437\u0440\u044f\u0434\u043d\u043e\u0441\u0442\u0438, \u0447\u0442\u043e \u0438 <i>OpenCV<\/i>. \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u0442\u044c \u044d\u0442\u043e \u043b\u0435\u0433\u043a\u043e:  <\/p>\n<pre><code class=\"python\">import numpy.distutils.system_info as sysinfo print(sysinfo.platform_bits)<\/code><\/pre>\n<p>  \u0412\u044b\u043f\u043e\u043b\u043d\u044f\u0435\u043c \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0444\u0430\u0439\u043b\u043e\u0432 \u0441\u0431\u043e\u0440\u043a\u0438 \u0441 \u043f\u043e\u043c\u043e\u0449\u044c\u044e \u0434\u043b\u0438\u043d\u043d\u043e\u0439 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u043d\u0438\u0436\u0435. \u041f\u0440\u0438 \u043d\u0435\u0443\u0434\u0430\u0447\u043d\u043e\u0439 \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u0438 \u0438\u043b\u0438 \u043d\u0430\u043b\u0438\u0447\u0438\u0438 \u043e\u0448\u0438\u0431\u043e\u043a \u043f\u043e\u0441\u043b\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f \u043a\u043e\u043c\u0430\u043d\u0434\u044b, \u043f\u043e\u0432\u0442\u043e\u0440\u043d\u0443\u044e \u0433\u0435\u043d\u0435\u0440\u0430\u0446\u0438\u044e \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u0442\u0438\u0432 \u0432\u0441\u0435 \u0444\u0430\u0439\u043b\u044b \u0432 <i>build\/<\/i> \u0438 <i>.cache\/<\/i>.<\/p>\n<pre><code class=\"cmake\">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%\"<\/code><\/pre>\n<p>  <\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0417\u043d\u0430\u0447\u0435\u043d\u0438\u0435 \u043d\u0435\u043a\u043e\u0442\u043e\u0440\u044b\u0445 \u0444\u043b\u0430\u0433\u043e\u0432<\/b><\/p>\n<div class=\"spoiler_text\">\n<ul>\n<li>BUILD_opencv_world \u2013 \u043d\u0435\u043e\u0431\u044f\u0437\u0430\u0442\u0435\u043b\u044c\u043d\u044b\u0439 \u043c\u043e\u0434\u0443\u043b\u044c, \u0441\u043e\u0434\u0435\u0440\u0436\u0430\u0449\u0438\u0439 \u043a\u043e\u043f\u0438\u0438 \u0432\u0441\u0435\u0445 \u0432\u044b\u0431\u0440\u0430\u043d\u043d\u044b\u0445 \u0432 \u0445\u043e\u0434\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0431\u0438\u0431\u043b\u0438\u043e\u0442\u0435\u043a. \u0423\u0434\u043e\u0431\u0435\u043d \u043f\u0440\u0438 \u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0435 \u043d\u0430 C++, \u0442\u0430\u043a \u043a\u0430\u043a \u0432\u043c\u0435\u0441\u0442\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u044f \u043a\u0443\u0447\u0438 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0435\u0439 opencv \u043c\u043e\u0436\u043d\u043e \u043f\u043e\u0434\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u043e\u0434\u043d\u0443 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u044c opencv_world411.lib \u0432 \u043f\u0440\u043e\u0435\u043a\u0442<\/li>\n<li>INSTALL_EXAMPLES\/INSTALL_TESTS \u2013 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0430 \u043f\u0440\u0438\u043c\u0435\u0440\u043e\u0432\/\u0442\u0435\u0441\u0442\u043e\u0432 \u043a\u043e\u0434\u0430 opencv<\/li>\n<li>CUDA_FAST_MATH, WITH_CUBLAS \u2013 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u0435 \u043c\u043e\u0434\u0443\u043b\u0438 \u0434\u043b\u044f CUDA, \u043f\u0440\u0438\u0437\u0432\u0430\u043d\u043d\u044b\u0435 \u0443\u0441\u043a\u043e\u0440\u0438\u0442\u044c \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u044f<\/li>\n<li>CUDA_ARCH_PTX \u2013 \u0432\u0435\u0440\u0441\u0438\u044f PTX \u0438\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u0439 \u0434\u043b\u044f \u0443\u043b\u0443\u0447\u0448\u0435\u043d\u0438\u044f \u043f\u0440\u043e\u0438\u0437\u0432\u043e\u0434\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0441\u0442\u0438 \u0432\u044b\u0447\u0438\u0441\u043b\u0435\u043d\u0438\u0439<\/li>\n<\/ul>\n<p>  <\/div>\n<\/div>\n<p>  \u0421\u043f\u0443\u0441\u0442\u044f \u043f\u0440\u0438\u043c\u0435\u0440\u043d\u043e 10 \u043c\u0438\u043d\u0443\u0442 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0435 \u0434\u043e\u043b\u0436\u043d\u0430 \u043f\u043e\u044f\u0432\u0438\u0442\u044c\u0441\u044f \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044f \u043e \u0441\u0431\u043e\u0440\u043a\u0435 \u0438 \u0437\u0430\u0432\u0435\u0440\u0448\u0430\u044e\u0449\u0438\u0435 \u0441\u0442\u0440\u043e\u043a\u0438 \u00ab<i>Configuring done<\/i>\u00bb \u0438 \u00ab<i>Generating done<\/i>\u00bb. \u041f\u0440\u043e\u0432\u0435\u0440\u044f\u0435\u043c \u0432\u0441\u044e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e, \u043e\u0441\u043e\u0431\u0435\u043d\u043d\u043e \u0440\u0430\u0437\u0434\u0435\u043b\u044b <i>NVIDIA CUDA, Python 2, Python 3<\/i>.<\/p>\n<p>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/yc\/to\/wc\/yctowcq5cgnrtx1-bxarwaihc-8.jpeg\"><\/p>\n<p>  \u0414\u0430\u043b\u0435\u0435 \u0441\u043e\u0431\u0438\u0440\u0430\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435. \u041d\u0430 \u0441\u0431\u043e\u0440\u043a\u0443 \u043c\u043e\u0436\u0435\u0442 \u0443\u0439\u0442\u0438 \u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0447\u0430\u0441\u043e\u0432 \u0432 \u0437\u0430\u0432\u0438\u0441\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0442 \u0432\u0430\u0448\u0435\u0433\u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u043e\u0440\u0430 \u0438 \u0432\u0435\u0440\u0441\u0438\u0438 <i>Visual Studio<\/i>.<\/p>\n<pre><code class=\"cmake\">cmake --build %opencvBuild% --target ALL_BUILD --config Release<\/code><\/pre>\n<p>  \u0423\u0441\u0442\u0430\u043d\u0430\u0432\u043b\u0438\u0432\u0430\u0435\u043c \u0440\u0435\u0448\u0435\u043d\u0438\u0435.<\/p>\n<pre><code class=\"cmake\">cmake --build %opencvBuild% --target INSTALL --config Release<\/code><\/pre>\n<p>  \u041f\u043e\u0441\u043b\u0435 \u0443\u0441\u043f\u0435\u0448\u043d\u043e\u0439 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438 \u0441\u043e\u0437\u0434\u0430\u0435\u043c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <i>OPENCV_DIR <\/i>\u0441\u043e \u0437\u043d\u0430\u0447\u0435\u043d\u0438\u0435\u043c <i>C:\\OpenCV\\opencv-4.1.1\\build\\install\\x64\\vc15\\bin<\/i> \u0438 \u0442\u0430\u043a\u0436\u0435 \u0434\u043e\u0431\u0430\u0432\u043b\u044f\u0435\u043c \u0435\u0435 \u0432 <i>PATH<\/i>.<\/p>\n<h3>\u0422\u0435\u0441\u0442<\/h3>\n<p>  \u041f\u0440\u043e\u0432\u0435\u0440\u0438\u043c \u0440\u0430\u0431\u043e\u0442\u043e\u0441\u043f\u043e\u0441\u043e\u0431\u043d\u043e\u0441\u0442\u044c <i>OpenCV <\/i>\u0441 \u043c\u043e\u0434\u0443\u043b\u0435\u043c <i>CUDA <\/i>\u043d\u0430 \u043f\u0440\u043e\u0441\u0442\u043e\u043c \u043f\u0440\u0438\u043c\u0435\u0440\u0435 \u0443\u043c\u043d\u043e\u0436\u0435\u043d\u0438\u044f \u043c\u0430\u0442\u0440\u0438\u0446.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u041f\u043e\u0434\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435 OpenCV \u0432 \u043f\u0440\u043e\u0435\u043a\u0442 Visual Studio<\/b><\/p>\n<div class=\"spoiler_text\">\n<ol>\n<li>\u0423\u0441\u0442\u0430\u043d\u043e\u0432\u0438\u0442\u044c \u0442\u0438\u043f \u0441\u0431\u043e\u0440\u043a\u0438 Release\/x64 (\u0434\u043b\u044f Debug \u0441\u043b\u0435\u0434\u0443\u0435\u0442 \u0441\u043e\u0431\u0440\u0430\u0442\u044c OpenCV \u0441 \u0444\u043b\u0430\u0433\u043e\u043c Debug)<\/li>\n<li>Project Properties \u2192 C\/C++ \u2192 General \u2192 \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u00abC:\\OpenCV\\opencv-4.1.1\\build\\install\\include\u00bb \u0432 Additional Include Directories<\/li>\n<li>Project Properties \u2192 Linker \u2192 General \u2192 \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u0441\u0442\u0440\u043e\u043a\u0443 \u00ab C:\\OpenCV\\opencv-4.1.1\\build\\install\\x64\\vc16\\lib\u00bb \u0432 Additional Library Directories<\/li>\n<li>Project Properties \u2192 Linker \u2192 General \u2192 \u0414\u043e\u0431\u0430\u0432\u0438\u0442\u044c \u00ab;opencv_world411.lib\u00bb (\u00ab;opencv_world411d.lib\u00bb \u0434\u043b\u044f Debug) \u0432 \u043a\u043e\u043d\u0435\u0446 Additional Dependencies<\/li>\n<\/ol>\n<p>  <\/div>\n<\/div>\n<p>  <b>\u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 <i>Python 3<\/i><\/b><\/p>\n<pre><code class=\"python\">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\")<\/code><\/pre>\n<p>  \u0412\u044b\u0432\u043e\u0434 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438<\/p>\n<pre><code class=\"bash\">Time elapsed: 0.3130002021789551<\/code><\/pre>\n<p>  <b>\u041f\u0440\u0438\u043c\u0435\u0440 \u043d\u0430 <i>C++<\/i><\/b><\/p>\n<pre><code class=\"cpp\">#include &lt;iostream&gt; #include &lt;opencv2\/opencv.hpp&gt; #include &lt;opencv2\/cudaarithm.hpp&gt;  using namespace std; using namespace cv; using namespace cv::cuda;  int main() {  \tMat h_array1 = Mat::ones(1024, 1024, CV_32FC2); \tMat h_array2 = Mat::ones(1024, 1024, CV_32FC2); \tMat h_array3 = Mat::zeros(1024, 1024, CV_32FC2); \tMat h_result; \tGpuMat d_array1, d_array2, d_array3, d_result;  \td_array1.upload(h_array1); \td_array2.upload(h_array2);  \tconst clock_t begin_time = clock(); \tcuda::gemm(d_array1, d_array2, 1.0, d_array3, 0.0, d_result); \tcout &lt;&lt; \"Time elapsed: \" &lt;&lt; (float(clock() - begin_time) \/ CLOCKS_PER_SEC) &lt;&lt; \" sec\" &lt;&lt; endl;  \td_result.download(h_result);  \treturn 0;<\/code><\/pre>\n<p>  \u0412\u044b\u0432\u043e\u0434 \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u0438<\/p>\n<pre><code class=\"bash\">Time elapsed: 0.354<\/code><\/pre>\n<p>  <\/p>\n<h3>\u0423\u0434\u0430\u043b\u0435\u043d\u0438\u0435<\/h3>\n<p>  \u0427\u0442\u043e\u0431\u044b \u0443\u0434\u0430\u043b\u0438\u0442\u044c <i>OpenCV<\/i>, \u043d\u0443\u0436\u043d\u043e \u0432\u044b\u043f\u043e\u043b\u043d\u0438\u0442\u044c \u043a\u043e\u043c\u0430\u043d\u0434\u0443.<\/p>\n<pre><code class=\"cmake\">cmake --build %opencvBuild% --target uninstall --config Release<\/code><\/pre>\n<p>  \u0438 \u0443\u0434\u0430\u043b\u0438\u0442\u044c \u0441\u0438\u0441\u0442\u0435\u043c\u043d\u0443\u044e \u043f\u0435\u0440\u0435\u043c\u0435\u043d\u043d\u0443\u044e <i>OPENCV_DIR <\/i>\u0438 \u0443\u0431\u0440\u0430\u0442\u044c \u043f\u0443\u0442\u044c \u0434\u043e OpenCV \u0438\u0437 <i>PATH<\/i>.<\/p>\n<h3>\u0417\u0430\u043a\u043b\u044e\u0447\u0435\u043d\u0438\u0435<\/h3>\n<p>  \u0412 \u0441\u0442\u0430\u0442\u044c\u0435 \u043c\u044b \u0440\u0430\u0441\u0441\u043c\u043e\u0442\u0440\u0435\u043b\u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443 <i>OpenCV 4<\/i> \u0434\u043b\u044f \u041e\u0421 <i>Windows 10<\/i>. \u0414\u0430\u043d\u043d\u044b\u0439 \u0430\u043b\u0433\u043e\u0440\u0438\u0442\u043c \u0442\u0435\u0441\u0442\u0438\u0440\u043e\u0432\u0430\u043b\u0441\u044f \u043d\u0430 <i>Windows 8.1<\/i> \u0438 <i>Windows 10<\/i>, \u043d\u043e, \u0432 \u0442\u0435\u043e\u0440\u0438\u0438, \u043c\u043e\u0436\u0435\u0442 \u0441\u043e\u0431\u0438\u0440\u0430\u0442\u044c\u0441\u044f \u0438 \u043d\u0430 <i>Windows 7<\/i>. \u0417\u0430 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0435\u0439 \u043c\u043e\u0436\u043d\u043e \u043e\u0431\u0440\u0430\u0442\u0438\u0442\u044c\u0441\u044f \u043a \u0441\u043f\u0438\u0441\u043a\u0443 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432 \u043d\u0438\u0436\u0435.<\/p>\n<p>  P.S. \u041d\u0430\u043f\u043e\u0441\u043b\u0435\u0434\u043e\u043a \u0441\u0432\u0435\u0434\u0435\u043c \u0432\u0441\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043e\u0447\u043d\u044b\u0435 \u043a\u043e\u043c\u0430\u043d\u0434\u044b \u0432 \u043e\u0434\u0438\u043d <i>.bat<\/i> \u0444\u0430\u0439\u043b \u0434\u043b\u044f \u0442\u0435\u0445, \u043a\u0442\u043e \u0445\u043e\u0447\u0435\u0442 \u0430\u0432\u0442\u043e\u043c\u0430\u0442\u0438\u0437\u0438\u0440\u043e\u0432\u0430\u0442\u044c \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0443.<\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">install_opencv411.bat<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"markdown\">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<\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  <\/p>\n<h3>\u0421\u043f\u0438\u0441\u043e\u043a \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u043e\u0432<\/h3>\n<p>  <\/p>\n<ol>\n<li><a href=\"https:\/\/docs.opencv.org\/4.1.1\/d3\/d52\/tutorial_windows_install.html\">docs.opencv.org\/4.1.1\/d3\/d52\/tutorial_windows_install.html<\/a><\/li>\n<li><a href=\"https:\/\/www.learnopencv.com\/install-opencv-4-on-windows\/\">www.learnopencv.com\/install-opencv-4-on-windows<\/a><\/li>\n<li><a href=\"https:\/\/jamesbowley.co.uk\/build-opencv-4-0-0-with-cuda-10-0-and-intel-mkl-tbb-in-windows\/\">jamesbowley.co.uk\/build-opencv-4-0-0-with-cuda-10-0-and-intel-mkl-tbb-in-windows<\/a><\/li>\n<li><a href=\"https:\/\/lightbuzz.com\/opencv-cuda\/\">lightbuzz.com\/opencv-cuda<\/a><\/li>\n<li>\u0413\u043b\u0430\u0432\u0430 \u00abBuilding libraries from Source\u00bb \u043a\u043d\u0438\u0433\u0438 Hands-on GPU-Accelerated Computer Vision with OpenCV and CUDA<\/li>\n<\/ol>\n<\/div>\n<p>               <script class=\"js-mediator-script\">!function(e){function t(t,n){if(!(n in e)){for(var r,a=e.document,i=a.scripts,o=i.length;o--;)if(-1!==i[o].src.indexOf(t)){r=i[o];break}if(!r){r=a.createElement(\"script\"),r.type=\"text\/javascript\",r.async=!0,r.defer=!0,r.src=t,r.charset=\"UTF-8\";var d=function(){var e=a.getElementsByTagName(\"script\")[0];e.parentNode.insertBefore(r,e)};\"[object Opera]\"==e.opera?a.addEventListener?a.addEventListener(\"DOMContentLoaded\",d,!1):e.attachEvent(\"onload\",d):d()}}}t(\"\/\/mediator.mail.ru\/script\/2820404\/\",\"_mediator\")}(window);<\/script>     <br \/> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"https:\/\/habr.com\/ru\/post\/464015\/\"> https:\/\/habr.com\/ru\/post\/464015\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"\n<div class=\"post__text post__text-html js-mediator-article\">\n<h3>\u0412\u0432\u0435\u0434\u0435\u043d\u0438\u0435<\/h3>\n<p>  \u0412 \u0434\u0430\u043d\u043d\u043e\u0439 \u0441\u0442\u0430\u0442\u044c\u0435 \u0440\u0435\u0447\u044c \u043f\u043e\u0439\u0434\u0435\u0442 \u043e \u0441\u0431\u043e\u0440\u043a\u0435 \u0438 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0435 <i>OpenCV 4<\/i> \u0438\u0437 \u0438\u0441\u0445\u043e\u0434\u043d\u044b\u0445 \u0444\u0430\u0439\u043b\u043e\u0432 \u0441 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u044b\u043c\u0438 \u043c\u043e\u0434\u0443\u043b\u044f\u043c\u0438 <i>CUDA 10<\/i> \u043d\u0430 \u041e\u0421 <i>Windows<\/i>.<\/p>\n<p>  \u042f \u043f\u043e\u0441\u0442\u0430\u0440\u0430\u043b\u0441\u044f \u0432\u043a\u043b\u044e\u0447\u0438\u0442\u044c \u0441\u044e\u0434\u0430 \u0432\u0441\u0435 \u0442\u043e\u043d\u043a\u043e\u0441\u0442\u0438 \u0438 \u043d\u044e\u0430\u043d\u0441\u044b, \u0441 \u043a\u043e\u0442\u043e\u0440\u044b\u043c\u0438 \u043c\u043e\u0436\u043d\u043e \u0441\u0442\u043e\u043b\u043a\u043d\u0443\u0442\u044c\u0441\u044f \u0432 \u0445\u043e\u0434\u0435 \u0443\u0441\u0442\u0430\u043d\u043e\u0432\u043a\u0438, \u0438 \u043f\u0440\u043e \u043a\u043e\u0442\u043e\u0440\u044b\u0435 \u043d\u0435 \u043d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0432 <a href=\"https:\/\/docs.opencv.org\/4.1.1\/d3\/d52\/tutorial_windows_install.html\">\u043e\u0444\u0438\u0446\u0438\u0430\u043b\u044c\u043d\u043e\u043c \u043c\u0430\u043d\u0443\u0430\u043b\u0435<\/a>.<br \/>  <img decoding=\"async\" src=\"https:\/\/habrastorage.org\/webt\/sz\/2t\/4w\/sz2t4w5o4_ijeltgbajfkopxx0a.jpeg\">  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-293509","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/293509","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=293509"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/293509\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=293509"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=293509"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=293509"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}