[{"data":1,"prerenderedAt":2512},["ShallowReactive",2],{"wiki-page-\u002Fwiki\u002F2023-12-10-dian-kong-shi-jue-huan-jing-da-jian\u002F0500-opencv-cuda-huan-jing-da-jian":3,"wiki-doc-items-2023-12-10-dian-kong-shi-jue-huan-jing-da-jian":2445,"wiki:author-members":2500},{"id":4,"title":5,"authors":6,"body":8,"chapterDepth":2432,"chapterOrder":2433,"date":2434,"description":59,"docKey":2435,"docRoot":2436,"docTitle":2437,"extension":2438,"isWikiDoc":96,"isWikiIndex":2439,"meta":2440,"navigation":96,"path":2441,"seo":2442,"stem":2443,"wikiDepth":93,"__hash__":2444},"wiki\u002Fwiki\u002F2023-12-10-电控视觉环境搭建\u002F0500-OpenCV__CUDA环境搭建.md","OpenCV_CUDA环境搭建",[7],"董佳辉",{"type":9,"value":10,"toc":2428},"minimark",[11,16,25,28,36,51,54,61,65,70,80,170,173,178,183,186,419,422,490,494,501,507,512,517,549,554,583,588,594,599,604,608,612,651,656,659,665,676,861,868,874,877,880,883,888,891,894,897,900,905,910,913,991,995,998,1001,1008,1013,1279,1284,1289,1292,1296,1301,1306,1309,1314,1317,1322,1327,1330,1333,1338,1343,1346,1351,1356,1359,1362,1365,1370,1377,1382,1385,1388,1393,1396,1399,1404,1407,1412,1433,1438,1441,1446,1450,1453,1458,1563,1568,1571,1576,1579,1584,1587,1593,1691,1696,1699,1704,1708,1713,1726,1729,1763,1768,1771,1780,1785,1789,1801,1806,1813,1819,2001,2018,2023,2028,2031,2036,2039,2043,2051,2057,2060,2069,2074,2079,2082,2093,2096,2099,2102,2105,2109,2112,2120,2123,2190,2193,2217,2220,2235,2238,2250,2253,2298,2301,2304,2341,2345,2353,2356,2359,2363,2366,2377,2380,2383,2389,2393,2414,2417,2424],[12,13,15],"h3",{"id":14},"linux","Linux",[17,18,19,20,24],"p",{},"更推荐在Linux上部署，一些深度学习的东西，在Linux上的运行速度要明显",[21,22,23],"strong",{},"远远高于","Windows。",[17,26,27],{},"如果你没有空闲硬盘装Linux了，可以考虑WSL2(在Windows上运行的Linux子系统2)，虽有一点点性能损失，但速度也远远高于Windows。",[17,29,30,31],{},"WSL2安装教程",[32,33,35],"a",{"href":34},"\u002Fwiki\u002F2024-03-30-linux-jiao-cheng","Vinci机器人队Linux入门教程",[17,37,38,41,42,47,48],{},[21,39,40],{},"实体机Linux","**＞",[21,43,44],{},[21,45,46],{},"WSL2","＞＞**",[21,49,50],{},"Windows",[17,52,53],{},"关于cv_bridge:最好在安装ros之前编译opencv，这样安装ros时,cv_bridge就会自己指向已经安装过的opencv，并且ros不会另外安装opencv，如此就可以通过find_package指令找到电脑上仅有的cv_bridge和opencv，保证系统环境不被污染。关于补救办法，请看常见问题",[17,55,56],{},[57,58],"img",{"alt":59,"src":60},"","https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage23.webp",[62,63,64],"h4",{"id":64},"保证显卡正常",[17,66,67],{},[21,68,69],{},"请确保 英伟达驱动、CUDA、cuDNN 全部安装成功并且版本正确。",[17,71,72,75,77],{},[21,73,74],{},"(安装驱动、CUDA、cuDNN教程:",[32,76,35],{"href":34},[21,78,79],{},")",[81,82,86],"pre",{"className":83,"code":84,"language":85,"meta":59,"style":59},"language-bash shiki shiki-themes github-light github-dark","\n# 检查显卡驱动\nnvidia-smi\n\n# 验证CUDA是否安装成功\nnvcc -V\n\n# 检查cuDNN版本命令(仅仅只是查了头文件)\ncat \u002Fusr\u002Flocal\u002Fcuda\u002Finclude\u002Fcudnn_version.h | grep CUDNN_MAJOR -A 2\n","bash",[87,88,89,98,105,112,117,123,133,138,144],"code",{"__ignoreMap":59},[90,91,94],"span",{"class":92,"line":93},"line",1,[90,95,97],{"emptyLinePlaceholder":96},true,"\n",[90,99,101],{"class":92,"line":100},2,[90,102,104],{"class":103},"sJ8bj","# 检查显卡驱动\n",[90,106,108],{"class":92,"line":107},3,[90,109,111],{"class":110},"sScJk","nvidia-smi\n",[90,113,115],{"class":92,"line":114},4,[90,116,97],{"emptyLinePlaceholder":96},[90,118,120],{"class":92,"line":119},5,[90,121,122],{"class":103},"# 验证CUDA是否安装成功\n",[90,124,126,129],{"class":92,"line":125},6,[90,127,128],{"class":110},"nvcc",[90,130,132],{"class":131},"sj4cs"," -V\n",[90,134,136],{"class":92,"line":135},7,[90,137,97],{"emptyLinePlaceholder":96},[90,139,141],{"class":92,"line":140},8,[90,142,143],{"class":103},"# 检查cuDNN版本命令(仅仅只是查了头文件)\n",[90,145,147,150,154,158,161,164,167],{"class":92,"line":146},9,[90,148,149],{"class":110},"cat",[90,151,153],{"class":152},"sZZnC"," \u002Fusr\u002Flocal\u002Fcuda\u002Finclude\u002Fcudnn_version.h",[90,155,157],{"class":156},"szBVR"," |",[90,159,160],{"class":110}," grep",[90,162,163],{"class":152}," CUDNN_MAJOR",[90,165,166],{"class":131}," -A",[90,168,169],{"class":131}," 2\n",[17,171,172],{},"出现下图这样的，则你是有英伟达驱动，CUDA以及cuDNN的",[17,174,175],{},[57,176],{"alt":59,"src":177},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage24.webp",[17,179,180],{},[57,181],{"alt":59,"src":182},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage25.webp",[62,184,185],{"id":185},"安装依赖项",[81,187,189],{"className":83,"code":188,"language":85,"meta":59,"style":59},"\n# Debian系系统\nsudo apt install -y libcurl4 build-essential pkg-config cmake-gui \\\n    libopenblas-dev libeigen3-dev libtbb-dev \\\n    libavcodec-dev libavformat-dev \\\n    libgstreamer-plugins-base1.0-dev libgstreamer1.0-dev \\\n    libswscale-dev libgtk-3-dev libpng-dev libjpeg-dev \\\n    libcanberra-gtk-module libcanberra-gtk3-module libv4l-dev python3-dev python3-numpy\n\n# RHEL红帽系系统\nbash -c 'sudo dnf install https:\u002F\u002Fmirrors.rpmfusion.org\u002Ffree\u002Ffedora\u002Frpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https:\u002F\u002Fmirrors.rpmfusion.org\u002Fnonfree\u002Ffedora\u002Frpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm'\nsudo dnf install -y curl gcc gcc-c++ make cmake cmake-gui \\\n    openblas-devel eigen3-devel tbb-devel \\\n    ffmpeg-libs ffmpeg-devel \\\n    gstreamer1-plugins-base-devel gstreamer1-devel \\\n    gtk3-devel libpng-devel libjpeg-devel \\\n    libc=aanberra-gtk3 libcanberra-devel v4l-utils v4l2loopback openexr-devel python3-dev python3-numpy\n\n",[87,190,191,195,200,229,242,252,262,278,295,299,305,316,347,361,372,383,397],{"__ignoreMap":59},[90,192,193],{"class":92,"line":93},[90,194,97],{"emptyLinePlaceholder":96},[90,196,197],{"class":92,"line":100},[90,198,199],{"class":103},"# Debian系系统\n",[90,201,202,205,208,211,214,217,220,223,226],{"class":92,"line":107},[90,203,204],{"class":110},"sudo",[90,206,207],{"class":152}," apt",[90,209,210],{"class":152}," install",[90,212,213],{"class":131}," -y",[90,215,216],{"class":152}," libcurl4",[90,218,219],{"class":152}," build-essential",[90,221,222],{"class":152}," pkg-config",[90,224,225],{"class":152}," cmake-gui",[90,227,228],{"class":131}," \\\n",[90,230,231,234,237,240],{"class":92,"line":114},[90,232,233],{"class":152},"    libopenblas-dev",[90,235,236],{"class":152}," libeigen3-dev",[90,238,239],{"class":152}," libtbb-dev",[90,241,228],{"class":131},[90,243,244,247,250],{"class":92,"line":119},[90,245,246],{"class":152},"    libavcodec-dev",[90,248,249],{"class":152}," libavformat-dev",[90,251,228],{"class":131},[90,253,254,257,260],{"class":92,"line":125},[90,255,256],{"class":152},"    libgstreamer-plugins-base1.0-dev",[90,258,259],{"class":152}," libgstreamer1.0-dev",[90,261,228],{"class":131},[90,263,264,267,270,273,276],{"class":92,"line":135},[90,265,266],{"class":152},"    libswscale-dev",[90,268,269],{"class":152}," libgtk-3-dev",[90,271,272],{"class":152}," libpng-dev",[90,274,275],{"class":152}," libjpeg-dev",[90,277,228],{"class":131},[90,279,280,283,286,289,292],{"class":92,"line":140},[90,281,282],{"class":152},"    libcanberra-gtk-module",[90,284,285],{"class":152}," libcanberra-gtk3-module",[90,287,288],{"class":152}," libv4l-dev",[90,290,291],{"class":152}," python3-dev",[90,293,294],{"class":152}," python3-numpy\n",[90,296,297],{"class":92,"line":146},[90,298,97],{"emptyLinePlaceholder":96},[90,300,302],{"class":92,"line":301},10,[90,303,304],{"class":103},"# RHEL红帽系系统\n",[90,306,308,310,313],{"class":92,"line":307},11,[90,309,85],{"class":110},[90,311,312],{"class":131}," -c",[90,314,315],{"class":152}," 'sudo dnf install https:\u002F\u002Fmirrors.rpmfusion.org\u002Ffree\u002Ffedora\u002Frpmfusion-free-release-$(rpm -E %fedora).noarch.rpm https:\u002F\u002Fmirrors.rpmfusion.org\u002Fnonfree\u002Ffedora\u002Frpmfusion-nonfree-release-$(rpm -E %fedora).noarch.rpm'\n",[90,317,319,321,324,326,328,331,334,337,340,343,345],{"class":92,"line":318},12,[90,320,204],{"class":110},[90,322,323],{"class":152}," dnf",[90,325,210],{"class":152},[90,327,213],{"class":131},[90,329,330],{"class":152}," curl",[90,332,333],{"class":152}," gcc",[90,335,336],{"class":152}," gcc-c++",[90,338,339],{"class":152}," make",[90,341,342],{"class":152}," cmake",[90,344,225],{"class":152},[90,346,228],{"class":131},[90,348,350,353,356,359],{"class":92,"line":349},13,[90,351,352],{"class":152},"    openblas-devel",[90,354,355],{"class":152}," eigen3-devel",[90,357,358],{"class":152}," tbb-devel",[90,360,228],{"class":131},[90,362,364,367,370],{"class":92,"line":363},14,[90,365,366],{"class":152},"    ffmpeg-libs",[90,368,369],{"class":152}," ffmpeg-devel",[90,371,228],{"class":131},[90,373,375,378,381],{"class":92,"line":374},15,[90,376,377],{"class":152},"    gstreamer1-plugins-base-devel",[90,379,380],{"class":152}," gstreamer1-devel",[90,382,228],{"class":131},[90,384,386,389,392,395],{"class":92,"line":385},16,[90,387,388],{"class":152},"    gtk3-devel",[90,390,391],{"class":152}," libpng-devel",[90,393,394],{"class":152}," libjpeg-devel",[90,396,228],{"class":131},[90,398,400,403,406,409,412,415,417],{"class":92,"line":399},17,[90,401,402],{"class":152},"    libc=aanberra-gtk3",[90,404,405],{"class":152}," libcanberra-devel",[90,407,408],{"class":152}," v4l-utils",[90,410,411],{"class":152}," v4l2loopback",[90,413,414],{"class":152}," openexr-devel",[90,416,291],{"class":152},[90,418,294],{"class":152},[17,420,421],{},"下方表格是这些依赖的说明",[423,424,425,436],"table",{},[426,427,428],"thead",{},[429,430,431],"tr",{},[432,433,435],"th",{"align":434},"left","生成 OpenCV 的主要依赖项",[437,438,439,445,450,455,460,465,470,475,480,485],"tbody",{},[429,440,441],{},[442,443,444],"td",{"align":434},"名称",[429,446,447],{},[442,448,449],{"align":434},"编译系统",[429,451,452],{},[442,453,454],{"align":434},"图像库",[429,456,457],{},[442,458,459],{"align":434},"OpenBLAS",[429,461,462],{},[442,463,464],{"align":434},"Eigen3",[429,466,467],{},[442,468,469],{"align":434},"Intel TBB",[429,471,472],{},[442,473,474],{"align":434},"FFMPEG",[429,476,477],{},[442,478,479],{"align":434},"GStreamer",[429,481,482],{},[442,483,484],{"align":434},"GTK",[429,486,487],{},[442,488,489],{"align":434},"Video4Linux",[62,491,493],{"id":492},"下载opencv源码","下载OpenCV源码",[17,495,496],{},[32,497,498],{"href":498,"rel":499},"https:\u002F\u002Fgithub.com\u002Fopencv\u002Fopencv",[500],"nofollow",[17,502,503],{},[32,504,505],{"href":505,"rel":506},"https:\u002F\u002Fgithub.com\u002Fopencv\u002Fopencv_contrib",[500],[17,508,509],{},[57,510],{"alt":59,"src":511},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage26.webp",[17,513,514],{},[57,515],{"alt":59,"src":516},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage27.webp",[81,518,520],{"className":83,"code":519,"language":85,"meta":59,"style":59},"\n# 创建文件夹存放源码\nmkdir -p ooppccvv\ncd ooppccvv\n",[87,521,522,526,531,542],{"__ignoreMap":59},[90,523,524],{"class":92,"line":93},[90,525,97],{"emptyLinePlaceholder":96},[90,527,528],{"class":92,"line":100},[90,529,530],{"class":103},"# 创建文件夹存放源码\n",[90,532,533,536,539],{"class":92,"line":107},[90,534,535],{"class":110},"mkdir",[90,537,538],{"class":131}," -p",[90,540,541],{"class":152}," ooppccvv\n",[90,543,544,547],{"class":92,"line":114},[90,545,546],{"class":131},"cd",[90,548,541],{"class":152},[17,550,551],{},[57,552],{"alt":59,"src":553},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage28.webp",[81,555,557],{"className":83,"code":556,"language":85,"meta":59,"style":59},"\n# 解压源码\nunzip .\u002Fopencv-4.11.0.zip\nunzip .\u002Fopencv_contrib-4.11.0.zip\n",[87,558,559,563,568,576],{"__ignoreMap":59},[90,560,561],{"class":92,"line":93},[90,562,97],{"emptyLinePlaceholder":96},[90,564,565],{"class":92,"line":100},[90,566,567],{"class":103},"# 解压源码\n",[90,569,570,573],{"class":92,"line":107},[90,571,572],{"class":110},"unzip",[90,574,575],{"class":152}," .\u002Fopencv-4.11.0.zip\n",[90,577,578,580],{"class":92,"line":114},[90,579,572],{"class":110},[90,581,582],{"class":152}," .\u002Fopencv_contrib-4.11.0.zip\n",[17,584,585],{},[57,586],{"alt":59,"src":587},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage29.webp",[17,589,590,591],{},"确认一下 opencv 目录和 opencv-contrib 目录位于相同的父目录内，并确认这两个目录下都存在 modules 子目录：",[21,592,593],{},"(一般不用确认，只要你照着敲我上方的命令，一定没问题)",[17,595,596],{},[57,597],{"alt":59,"src":598},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage30.webp",[17,600,601],{},[57,602],{"alt":59,"src":603},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage31.webp",[62,605,607],{"id":606},"cmake编译","CMake编译",[609,610,611],"h5",{"id":611},"准备工作",[81,613,615],{"className":83,"code":614,"language":85,"meta":59,"style":59},"\n# 创建build文件夹用于装CMake生成的内容:\ncd opencv-4.11.0\nmkdir -p build && cd build\n",[87,616,617,621,626,633],{"__ignoreMap":59},[90,618,619],{"class":92,"line":93},[90,620,97],{"emptyLinePlaceholder":96},[90,622,623],{"class":92,"line":100},[90,624,625],{"class":103},"# 创建build文件夹用于装CMake生成的内容:\n",[90,627,628,630],{"class":92,"line":107},[90,629,546],{"class":131},[90,631,632],{"class":152}," opencv-4.11.0\n",[90,634,635,637,639,642,646,648],{"class":92,"line":114},[90,636,535],{"class":110},[90,638,538],{"class":131},[90,640,641],{"class":152}," build",[90,643,645],{"class":644},"sVt8B"," && ",[90,647,546],{"class":131},[90,649,650],{"class":152}," build\n",[17,652,653],{},[57,654],{"alt":59,"src":655},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage32.webp",[17,657,658],{},"OpenCV使用CMake与Makefile进行编译，编译选项较多，详见（也可以不看，不过不同版本有些CMake编译选项是不同的）：",[17,660,661],{},[32,662,663],{"href":663,"rel":664},"https:\u002F\u002Fdocs.opencv.org\u002F4.10.0\u002Fdb\u002Fd05\u002Ftutorial_config_reference.html",[500],[17,666,667,668,671,672,675],{},"下方被划掉的是在OpenCV4.11.0中已经不复存在的参数，但是可能在其他版本的OpenCV中仍有效，请自行用",[87,669,670],{},"CMake-LAH","(不推荐)命令或者",[87,673,674],{},"CMake-gui","(推荐)查看。",[423,677,678,685],{},[426,679,680],{},[429,681,682],{},[432,683,684],{"align":434},"OpenCV4.11.0 CMake常用编译选项表一览",[437,686,687,692,697,702,707,712,717,722,727,732,737,742,747,752,757,762,767,772,777,782,787,792,797,802,807,812,817,822,827,832,837,842,847,852,857],{},[429,688,689],{},[442,690,691],{"align":434},"序号",[429,693,694],{},[442,695,696],{"align":434},"1",[429,698,699],{},[442,700,701],{"align":434},"2",[429,703,704],{},[442,705,706],{"align":434},"3",[429,708,709],{},[442,710,711],{"align":434},"4",[429,713,714],{},[442,715,716],{"align":434},"5",[429,718,719],{},[442,720,721],{"align":434},"6",[429,723,724],{},[442,725,726],{"align":434},"7",[429,728,729],{},[442,730,731],{"align":434},"8",[429,733,734],{},[442,735,736],{"align":434},"9",[429,738,739],{},[442,740,741],{"align":434},"10",[429,743,744],{},[442,745,746],{"align":434},"11",[429,748,749],{},[442,750,751],{"align":434},"12",[429,753,754],{},[442,755,756],{"align":434},"13",[429,758,759],{},[442,760,761],{"align":434},"14",[429,763,764],{},[442,765,766],{"align":434},"15",[429,768,769],{},[442,770,771],{"align":434},"16",[429,773,774],{},[442,775,776],{"align":434},"17",[429,778,779],{},[442,780,781],{"align":434},"18",[429,783,784],{},[442,785,786],{"align":434},"19",[429,788,789],{},[442,790,791],{"align":434},"20",[429,793,794],{},[442,795,796],{"align":434},"21",[429,798,799],{},[442,800,801],{"align":434},"22",[429,803,804],{},[442,805,806],{"align":434},"23",[429,808,809],{},[442,810,811],{"align":434},"24",[429,813,814],{},[442,815,816],{"align":434},"25",[429,818,819],{},[442,820,821],{"align":434},"26",[429,823,824],{},[442,825,826],{"align":434},"27",[429,828,829],{},[442,830,831],{"align":434},"28",[429,833,834],{},[442,835,836],{"align":434},"29",[429,838,839],{},[442,840,841],{"align":434},"30",[429,843,844],{},[442,845,846],{"align":434},"31",[429,848,849],{},[442,850,851],{"align":434},"32",[429,853,854],{},[442,855,856],{"align":434},"33",[429,858,859],{},[442,860],{"align":434},[862,863,864],"ol",{},[865,866,867],"li",{},"查询GPU Compute Capability(CUDA_ARCH_BIN参数):",[17,869,870],{},[32,871,872],{"href":872,"rel":873},"https:\u002F\u002Fdeveloper.nvidia.com\u002Fcuda-gpus#collapseOne",[500],[17,875,876],{},"进入网站后，",[17,878,879],{},"GeForce代表英伟达游戏系列显卡，常见的有GTX1080，RTX3080，RTX 4080等。",[17,881,882],{},"Jetson代表工控机序列显卡。",[17,884,885],{},[57,886],{"alt":59,"src":887},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage33.webp",[17,889,890],{},"我是3060Laptop(笔记本移动端显卡，所以找右列的Notebook下方的3060)",[17,892,893],{},"如果你是3060(台式桌面端，则要找左列的3060)",[17,895,896],{},"通过图得知，我的显卡算力(GPU Compute Capability)为8.6，所以我的CMake的CUDA_ARCH_BIN参数为8.6。",[17,898,899],{},"CUDA_ARCH_PTX为BIN的最高值，我只设置了一个BIN，所以最高值就是这个8.6。(只有你要给电脑更换显卡的情况下，才要给BIN设置多个值，就需要把你要用的显卡的值全包含在BIN中，而PTX只需要BIN的最高值即可)",[17,901,902],{},[57,903],{"alt":59,"src":904},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage34.webp",[862,906,907],{"start":100},[865,908,909],{},"Python3的路径查询，请在终端中使用，检查是否都有结果生成，确保打印出的结果符合预期后再进行下面的CMake生成操作。(不需要记住路径)",[17,911,912],{},"当然你也可以用命令反馈出来的路径复制出来，这个路径就是参数的值。",[81,914,916],{"className":83,"code":915,"language":85,"meta":59,"style":59},"\n# Python3 C++接口库的路径\npython3 -c \"import sysconfig; from os.path import join; print(join(sysconfig.get_config_var('LIBDIR'), sysconfig.get_config_var('LDLIBRARY')))\"\n\n# Python3 矩阵库头文件的路径\npython3 -c \"import numpy; print(numpy.get_include())\"\n\n# OpenCV 的 Python3 包安装的路径。\npython3 -c \"import sysconfig; print(sysconfig.get_path('purelib'))\"\n\n# Python3 头文件的路径\npython3 -c \"import sysconfig; print(sysconfig.get_path('include'))\"\n",[87,917,918,922,927,937,941,946,955,959,964,973,977,982],{"__ignoreMap":59},[90,919,920],{"class":92,"line":93},[90,921,97],{"emptyLinePlaceholder":96},[90,923,924],{"class":92,"line":100},[90,925,926],{"class":103},"# Python3 C++接口库的路径\n",[90,928,929,932,934],{"class":92,"line":107},[90,930,931],{"class":110},"python3",[90,933,312],{"class":131},[90,935,936],{"class":152}," \"import sysconfig; from os.path import join; print(join(sysconfig.get_config_var('LIBDIR'), sysconfig.get_config_var('LDLIBRARY')))\"\n",[90,938,939],{"class":92,"line":114},[90,940,97],{"emptyLinePlaceholder":96},[90,942,943],{"class":92,"line":119},[90,944,945],{"class":103},"# Python3 矩阵库头文件的路径\n",[90,947,948,950,952],{"class":92,"line":125},[90,949,931],{"class":110},[90,951,312],{"class":131},[90,953,954],{"class":152}," \"import numpy; print(numpy.get_include())\"\n",[90,956,957],{"class":92,"line":135},[90,958,97],{"emptyLinePlaceholder":96},[90,960,961],{"class":92,"line":140},[90,962,963],{"class":103},"# OpenCV 的 Python3 包安装的路径。\n",[90,965,966,968,970],{"class":92,"line":146},[90,967,931],{"class":110},[90,969,312],{"class":131},[90,971,972],{"class":152}," \"import sysconfig; print(sysconfig.get_path('purelib'))\"\n",[90,974,975],{"class":92,"line":301},[90,976,97],{"emptyLinePlaceholder":96},[90,978,979],{"class":92,"line":307},[90,980,981],{"class":103},"# Python3 头文件的路径\n",[90,983,984,986,988],{"class":92,"line":318},[90,985,931],{"class":110},[90,987,312],{"class":131},[90,989,990],{"class":152}," \"import sysconfig; print(sysconfig.get_path('include'))\"\n",[609,992,994],{"id":993},"cmake编译两种方式选其一","CMake编译**(两种方式选其一)**",[17,996,997],{},"因为电脑配置的不同，每个电脑的硬件，软件(依赖包)等都不同，所以我能跑起来的你不一定一下就能跑成功。",[17,999,1000],{},"一般很难风调雨顺，如果有问题及时去百度，谷歌，OpenCV论坛上找答案。",[17,1002,1003,1004],{},"论坛:",[32,1005,1006],{"href":1006,"rel":1007},"https:\u002F\u002Fforum.opencv.org\u002F",[500],[1009,1010,1012],"h6",{"id":1011},"cmake终端命令方式不建议更建议用gui的方式这种终端的方式容易出奇奇怪怪的问题","CMake终端命令方式(不建议，更建议用GUI的方式，这种终端的方式容易出奇奇怪怪的问题)",[81,1014,1016],{"className":83,"code":1015,"language":85,"meta":59,"style":59},"cmake .. -DCMAKE_BUILD_TYPE=Release \\\n        -DCMAKE_INSTALL_PREFIX=\u002Fusr\u002Flocal \\\n        -DBUILD_SHARED_LIBS=ON \\\n        -DOPENCV_EXTRA_MODULES_PATH=..\u002F..\u002Fopencv_contrib-4.11.0\u002Fmodules \\\n        -DOPENCV_ENABLE_NONFREE=ON \\\n        -DBUILD_TESTS=ON \\\n        -DBUILD_PERF_TESTS=ON \\\n        -DOPENCV_GENERATE_PKGCONFIG=ON \\\n        -DWITH_GTK=ON \\\n        -DWITH_CUDA=ON \\\n        -DENABLE_FAST_MATH=ON \\\n        -DCUDA_FAST_MATH=ON \\\n        -DWITH_CUBLAS=ON \\\n        -DCUDA_ARCH_BIN=\"8.6\" \\\n        -DCUDA_ARCH_PTX=\"8.6\" \\\n        -DCUDA_HOST_COMPILER=\u002Fusr\u002Fbin\u002Fgcc-13 \\\n        -DWITH_CUDNN=ON \\\n        -DOPENCV_DNN_CUDA=ON \\\n        -DWITH_IPP=ON \\\n        -DWITH_TBB=ON \\\n        -DWITH_OPENMP=ON \\\n        -DWITH_PTHREADS_PF=ON \\\n        -DOPENCV_PYTHON3_VERSION=3.12 \\\n        -DPYTHON3_EXECUTABLE=\u002Fusr\u002Fbin\u002Fpython3 \\\n        -DPYTHON3_LIBRARY=$(python3 -c \"import sysconfig; from os.path import join; print(join(sysconfig.get_config_var('LIBDIR'), sysconfig.get_config_var('LDLIBRARY')))\") \\\n        -DPYTHON3_NUMPY_INCLUDE_DIRS=$(python3 -c \"import numpy; print(numpy.get_include())\") \\\n        -DPYTHON3_PACKAGES_PATH=$(python3 -c \"import sysconfig; print(sysconfig.get_path('purelib'))\") \\\n        -DPYTHON3_INCLUDE_DIR=$(python3 -c \"import sysconfig; print(sysconfig.get_path('include'))\") \\\n        -DWITH_OPENGL=ON\n\n",[87,1017,1018,1031,1038,1045,1052,1059,1066,1073,1080,1087,1094,1101,1108,1115,1125,1134,1141,1148,1156,1164,1172,1180,1188,1196,1204,1222,1239,1256,1273],{"__ignoreMap":59},[90,1019,1020,1023,1026,1029],{"class":92,"line":93},[90,1021,1022],{"class":110},"cmake",[90,1024,1025],{"class":152}," ..",[90,1027,1028],{"class":131}," -DCMAKE_BUILD_TYPE=Release",[90,1030,228],{"class":131},[90,1032,1033,1036],{"class":92,"line":100},[90,1034,1035],{"class":131},"        -DCMAKE_INSTALL_PREFIX=\u002Fusr\u002Flocal",[90,1037,228],{"class":131},[90,1039,1040,1043],{"class":92,"line":107},[90,1041,1042],{"class":131},"        -DBUILD_SHARED_LIBS=ON",[90,1044,228],{"class":131},[90,1046,1047,1050],{"class":92,"line":114},[90,1048,1049],{"class":131},"        -DOPENCV_EXTRA_MODULES_PATH=..\u002F..\u002Fopencv_contrib-4.11.0\u002Fmodules",[90,1051,228],{"class":131},[90,1053,1054,1057],{"class":92,"line":119},[90,1055,1056],{"class":131},"        -DOPENCV_ENABLE_NONFREE=ON",[90,1058,228],{"class":131},[90,1060,1061,1064],{"class":92,"line":125},[90,1062,1063],{"class":131},"        -DBUILD_TESTS=ON",[90,1065,228],{"class":131},[90,1067,1068,1071],{"class":92,"line":135},[90,1069,1070],{"class":131},"        -DBUILD_PERF_TESTS=ON",[90,1072,228],{"class":131},[90,1074,1075,1078],{"class":92,"line":140},[90,1076,1077],{"class":131},"        -DOPENCV_GENERATE_PKGCONFIG=ON",[90,1079,228],{"class":131},[90,1081,1082,1085],{"class":92,"line":146},[90,1083,1084],{"class":131},"        -DWITH_GTK=ON",[90,1086,228],{"class":131},[90,1088,1089,1092],{"class":92,"line":301},[90,1090,1091],{"class":131},"        -DWITH_CUDA=ON",[90,1093,228],{"class":131},[90,1095,1096,1099],{"class":92,"line":307},[90,1097,1098],{"class":131},"        -DENABLE_FAST_MATH=ON",[90,1100,228],{"class":131},[90,1102,1103,1106],{"class":92,"line":318},[90,1104,1105],{"class":131},"        -DCUDA_FAST_MATH=ON",[90,1107,228],{"class":131},[90,1109,1110,1113],{"class":92,"line":349},[90,1111,1112],{"class":131},"        -DWITH_CUBLAS=ON",[90,1114,228],{"class":131},[90,1116,1117,1120,1123],{"class":92,"line":363},[90,1118,1119],{"class":131},"        -DCUDA_ARCH_BIN=",[90,1121,1122],{"class":152},"\"8.6\"",[90,1124,228],{"class":131},[90,1126,1127,1130,1132],{"class":92,"line":374},[90,1128,1129],{"class":131},"        -DCUDA_ARCH_PTX=",[90,1131,1122],{"class":152},[90,1133,228],{"class":131},[90,1135,1136,1139],{"class":92,"line":385},[90,1137,1138],{"class":131},"        -DCUDA_HOST_COMPILER=\u002Fusr\u002Fbin\u002Fgcc-13",[90,1140,228],{"class":131},[90,1142,1143,1146],{"class":92,"line":399},[90,1144,1145],{"class":131},"        -DWITH_CUDNN=ON",[90,1147,228],{"class":131},[90,1149,1151,1154],{"class":92,"line":1150},18,[90,1152,1153],{"class":131},"        -DOPENCV_DNN_CUDA=ON",[90,1155,228],{"class":131},[90,1157,1159,1162],{"class":92,"line":1158},19,[90,1160,1161],{"class":131},"        -DWITH_IPP=ON",[90,1163,228],{"class":131},[90,1165,1167,1170],{"class":92,"line":1166},20,[90,1168,1169],{"class":131},"        -DWITH_TBB=ON",[90,1171,228],{"class":131},[90,1173,1175,1178],{"class":92,"line":1174},21,[90,1176,1177],{"class":131},"        -DWITH_OPENMP=ON",[90,1179,228],{"class":131},[90,1181,1183,1186],{"class":92,"line":1182},22,[90,1184,1185],{"class":131},"        -DWITH_PTHREADS_PF=ON",[90,1187,228],{"class":131},[90,1189,1191,1194],{"class":92,"line":1190},23,[90,1192,1193],{"class":131},"        -DOPENCV_PYTHON3_VERSION=3.12",[90,1195,228],{"class":131},[90,1197,1199,1202],{"class":92,"line":1198},24,[90,1200,1201],{"class":131},"        -DPYTHON3_EXECUTABLE=\u002Fusr\u002Fbin\u002Fpython3",[90,1203,228],{"class":131},[90,1205,1207,1210,1212,1215,1218,1220],{"class":92,"line":1206},25,[90,1208,1209],{"class":131},"        -DPYTHON3_LIBRARY=$(",[90,1211,931],{"class":110},[90,1213,1214],{"class":131}," -c ",[90,1216,1217],{"class":152},"\"import sysconfig; from os.path import join; print(join(sysconfig.get_config_var('LIBDIR'), sysconfig.get_config_var('LDLIBRARY')))\"",[90,1219,79],{"class":131},[90,1221,228],{"class":131},[90,1223,1225,1228,1230,1232,1235,1237],{"class":92,"line":1224},26,[90,1226,1227],{"class":131},"        -DPYTHON3_NUMPY_INCLUDE_DIRS=$(",[90,1229,931],{"class":110},[90,1231,1214],{"class":131},[90,1233,1234],{"class":152},"\"import numpy; print(numpy.get_include())\"",[90,1236,79],{"class":131},[90,1238,228],{"class":131},[90,1240,1242,1245,1247,1249,1252,1254],{"class":92,"line":1241},27,[90,1243,1244],{"class":131},"        -DPYTHON3_PACKAGES_PATH=$(",[90,1246,931],{"class":110},[90,1248,1214],{"class":131},[90,1250,1251],{"class":152},"\"import sysconfig; print(sysconfig.get_path('purelib'))\"",[90,1253,79],{"class":131},[90,1255,228],{"class":131},[90,1257,1259,1262,1264,1266,1269,1271],{"class":92,"line":1258},28,[90,1260,1261],{"class":131},"        -DPYTHON3_INCLUDE_DIR=$(",[90,1263,931],{"class":110},[90,1265,1214],{"class":131},[90,1267,1268],{"class":152},"\"import sysconfig; print(sysconfig.get_path('include'))\"",[90,1270,79],{"class":131},[90,1272,228],{"class":131},[90,1274,1276],{"class":92,"line":1275},29,[90,1277,1278],{"class":131},"        -DWITH_OPENGL=ON\n",[17,1280,1281],{},[57,1282],{"alt":59,"src":1283},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage35.webp",[17,1285,1286],{},[57,1287],{"alt":59,"src":1288},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage36.webp",[17,1290,1291],{},"你可以根据你的需要，按照之前的说明来自行增减或修改这些选项。如果 cmake 命令出错，往往是缺少依赖项或配置的生成选项不正确所致，可根据提示信息来检查。如果执行成功，就可以进行编译（请看Makefiles编译部分）了：",[1009,1293,1295],{"id":1294},"cmake-gui方式推荐不过太麻烦但是问题少且更好找问题","CMake-GUI方式(推荐，不过太麻烦，但是问题少，且更好找问题)",[862,1297,1298],{},[865,1299,1300],{},"打开CMake-GUI：",[17,1302,1303],{},[57,1304],{"alt":59,"src":1305},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage37.webp",[17,1307,1308],{},"配置一下这俩路径",[17,1310,1311],{},[57,1312],{"alt":59,"src":1313},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage38.webp",[17,1315,1316],{},"点击左下角配置，选择Makefiles",[17,1318,1319],{},[57,1320],{"alt":59,"src":1321},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage39.webp",[862,1323,1324],{"start":100},[865,1325,1326],{},"配置参数",[17,1328,1329],{},"根据上方表格去挨个参数进行配置。填完所有选项后，配置完毕点Configure.",[17,1331,1332],{},"在配置参数遇到问题，请看下面的常见问题章节。",[17,1334,1335],{},[57,1336],{"alt":59,"src":1337},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage40.webp",[17,1339,1340],{},[57,1341],{"alt":59,"src":1342},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage41.webp",[17,1344,1345],{},"你可以根据你的需要，按照之前的说明来自行增减或修改这些选项。如果 cmake 命令出错，往往是缺少依赖项或配置的生成选项不正确所致，可根据提示信息来检查。如果执行成功，就可以进行编译(进行Makefiles编译)了：",[17,1347,1348],{},[57,1349],{"alt":59,"src":1350},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage42.webp",[17,1352,1353],{},[57,1354],{"alt":59,"src":1355},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage43.webp",[1009,1357,1358],{"id":1358},"常见问题",[17,1360,1361],{},"####### 无CUDA选项\n有时候CMake-GUI只会在编译后才显示某些参数(比如只有编译过WITH_CUDA才会显示CUDA相关的选项)。",[17,1363,1364],{},"所以你需要先把WITH_CUDA打上勾，再点左下角的config,这样才会出现和CUDA相关的选项，再把那些选项配置一下。",[17,1366,1367],{},[57,1368],{"alt":59,"src":1369},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage44.webp",[17,1371,1372,1373,1376],{},"####### 模组的路径与命令行方式不同\n需要注意的是，这个相对路径与直接敲CMake命令配置的参数不同，这里是",[87,1374,1375],{},"..\u002Fopencv_contrib-4.11.0\u002Fmodules","。",[17,1378,1379],{},[57,1380],{"alt":59,"src":1381},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage45.webp",[17,1383,1384],{},"####### OPENCV_PYTHON3_VERSION参数的类型错了\n在cmake-gui中不知道为何OPENCV_PYTHON3_VERSION参数的类型成了布尔型。",[17,1386,1387],{},"需要手动改为字符串型数据。",[17,1389,1390],{},[57,1391],{"alt":59,"src":1392},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage46.webp",[17,1394,1395],{},"上图就是问题所在，这里竟然是个布尔值。",[17,1397,1398],{},"先删掉该选项。",[17,1400,1401],{},[57,1402],{"alt":59,"src":1403},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage47.webp",[17,1405,1406],{},"再重新添加一个该选项。",[17,1408,1409],{},[57,1410],{"alt":59,"src":1411},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage48.webp",[81,1413,1417],{"className":1414,"code":1415,"language":1416,"meta":59,"style":59},"language-Dockerfile shiki shiki-themes github-light github-dark","\n# 查看python3版本\npython3 --version\n","Dockerfile",[87,1418,1419,1423,1428],{"__ignoreMap":59},[90,1420,1421],{"class":92,"line":93},[90,1422,97],{"emptyLinePlaceholder":96},[90,1424,1425],{"class":92,"line":100},[90,1426,1427],{"class":103},"# 查看python3版本\n",[90,1429,1430],{"class":92,"line":107},[90,1431,1432],{"class":644},"python3 --version\n",[17,1434,1435],{},[57,1436],{"alt":59,"src":1437},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage49.webp",[17,1439,1440],{},"在下面填上3.12，后面的小版本号不用填。",[17,1442,1443],{},[57,1444],{"alt":59,"src":1445},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage50.webp",[62,1447,1449],{"id":1448},"makefiles编译","Makefiles编译",[17,1451,1452],{},"后面 -j 参数的意义是使用所有 CPU 参与编译。如果启用了 CUDA ，生成过程会比较慢，请耐心等待。编译期间如果出错往往是编译器、系统库、三方库的版本兼容性问题，找问题的难度偏大。",[17,1454,1455],{},[21,1456,1457],{},"请在build目录下进行下方命令。",[81,1459,1461],{"className":83,"code":1460,"language":85,"meta":59,"style":59},"\n# 内存小于16GB\nmake all\n\n# 内存等于16GB\nmake all -j$(( $(grep -c ^processor \u002Fproc\u002Fcpuinfo) \u002F 2 ))\n\n# 内存大于32GB\nmake all -j$(grep -c ^processor \u002Fproc\u002Fcpuinfo)\n\n# 或者自行规定线程数量（比如16线程）\nmake all -j16\n",[87,1462,1463,1467,1472,1480,1484,1489,1516,1520,1525,1545,1549,1554],{"__ignoreMap":59},[90,1464,1465],{"class":92,"line":93},[90,1466,97],{"emptyLinePlaceholder":96},[90,1468,1469],{"class":92,"line":100},[90,1470,1471],{"class":103},"# 内存小于16GB\n",[90,1473,1474,1477],{"class":92,"line":107},[90,1475,1476],{"class":110},"make",[90,1478,1479],{"class":152}," all\n",[90,1481,1482],{"class":92,"line":114},[90,1483,97],{"emptyLinePlaceholder":96},[90,1485,1486],{"class":92,"line":119},[90,1487,1488],{"class":103},"# 内存等于16GB\n",[90,1490,1491,1493,1496,1499,1502,1504,1507,1510,1513],{"class":92,"line":125},[90,1492,1476],{"class":110},[90,1494,1495],{"class":152}," all",[90,1497,1498],{"class":131}," -j$(( ",[90,1500,1501],{"class":110},"$(grep",[90,1503,1214],{"class":131},[90,1505,1506],{"class":152},"^processor",[90,1508,1509],{"class":152}," \u002Fproc\u002Fcpuinfo",[90,1511,1512],{"class":131},") \u002F 2 )",[90,1514,1515],{"class":644},")\n",[90,1517,1518],{"class":92,"line":135},[90,1519,97],{"emptyLinePlaceholder":96},[90,1521,1522],{"class":92,"line":140},[90,1523,1524],{"class":103},"# 内存大于32GB\n",[90,1526,1527,1529,1531,1534,1537,1539,1541,1543],{"class":92,"line":146},[90,1528,1476],{"class":110},[90,1530,1495],{"class":152},[90,1532,1533],{"class":131}," -j$(",[90,1535,1536],{"class":110},"grep",[90,1538,1214],{"class":131},[90,1540,1506],{"class":152},[90,1542,1509],{"class":152},[90,1544,1515],{"class":131},[90,1546,1547],{"class":92,"line":301},[90,1548,97],{"emptyLinePlaceholder":96},[90,1550,1551],{"class":92,"line":307},[90,1552,1553],{"class":103},"# 或者自行规定线程数量（比如16线程）\n",[90,1555,1556,1558,1560],{"class":92,"line":318},[90,1557,1476],{"class":110},[90,1559,1495],{"class":152},[90,1561,1562],{"class":131}," -j16\n",[17,1564,1565],{},[57,1566],{"alt":59,"src":1567},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage51.webp",[17,1569,1570],{},"全核跑编译",[17,1572,1573],{},[57,1574],{"alt":59,"src":1575},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage52.webp",[17,1577,1578],{},"如图才是真编译成功，没有错误。",[17,1580,1581],{},[57,1582],{"alt":59,"src":1583},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage53.webp",[17,1585,1586],{},"生成结束后，执行以下命令进行安装：",[17,1588,1589,1592],{},[87,1590,1591],{},"$(grep -c ^processor \u002Fproc\u002Fcpuinfo)","变量为CPU线程的数量。(这样可以使CPU全力多线程进行编译)",[81,1594,1596],{"className":83,"code":1595,"language":85,"meta":59,"style":59},"\n# 内存小于16GB\nsudo make install\n\n# 内存等于16GB\nsudo make install -j$(( $(grep -c ^processor \u002Fproc\u002Fcpuinfo) \u002F 2 ))\n\n# 内存大于32GB\nsudo make install -j$(grep -c ^processor \u002Fproc\u002Fcpuinfo)\n\n# 或者自行规定线程数量（比如16线程）\nsudo make install -j16\n",[87,1597,1598,1602,1606,1615,1619,1623,1645,1649,1653,1673,1677,1681],{"__ignoreMap":59},[90,1599,1600],{"class":92,"line":93},[90,1601,97],{"emptyLinePlaceholder":96},[90,1603,1604],{"class":92,"line":100},[90,1605,1471],{"class":103},[90,1607,1608,1610,1612],{"class":92,"line":107},[90,1609,204],{"class":110},[90,1611,339],{"class":152},[90,1613,1614],{"class":152}," install\n",[90,1616,1617],{"class":92,"line":114},[90,1618,97],{"emptyLinePlaceholder":96},[90,1620,1621],{"class":92,"line":119},[90,1622,1488],{"class":103},[90,1624,1625,1627,1629,1631,1633,1635,1637,1639,1641,1643],{"class":92,"line":125},[90,1626,204],{"class":110},[90,1628,339],{"class":152},[90,1630,210],{"class":152},[90,1632,1498],{"class":131},[90,1634,1501],{"class":110},[90,1636,1214],{"class":131},[90,1638,1506],{"class":152},[90,1640,1509],{"class":152},[90,1642,1512],{"class":131},[90,1644,1515],{"class":644},[90,1646,1647],{"class":92,"line":135},[90,1648,97],{"emptyLinePlaceholder":96},[90,1650,1651],{"class":92,"line":140},[90,1652,1524],{"class":103},[90,1654,1655,1657,1659,1661,1663,1665,1667,1669,1671],{"class":92,"line":146},[90,1656,204],{"class":110},[90,1658,339],{"class":152},[90,1660,210],{"class":152},[90,1662,1533],{"class":131},[90,1664,1536],{"class":110},[90,1666,1214],{"class":131},[90,1668,1506],{"class":152},[90,1670,1509],{"class":152},[90,1672,1515],{"class":131},[90,1674,1675],{"class":92,"line":301},[90,1676,97],{"emptyLinePlaceholder":96},[90,1678,1679],{"class":92,"line":307},[90,1680,1553],{"class":103},[90,1682,1683,1685,1687,1689],{"class":92,"line":318},[90,1684,204],{"class":110},[90,1686,339],{"class":152},[90,1688,210],{"class":152},[90,1690,1562],{"class":131},[17,1692,1693],{},[57,1694],{"alt":59,"src":1695},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage54.webp",[17,1697,1698],{},"无报错则安装成功",[17,1700,1701],{},[57,1702],{"alt":59,"src":1703},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage55.webp",[62,1705,1707],{"id":1706},"配置opencv环境变量env","配置OpenCV环境变量ENV",[862,1709,1710],{},[865,1711,1712],{},"可能需要配置一下lib的路径：",[81,1714,1716],{"className":83,"code":1715,"language":85,"meta":59,"style":59},"vim ~\u002F.bashrc\n",[87,1717,1718],{"__ignoreMap":59},[90,1719,1720,1723],{"class":92,"line":93},[90,1721,1722],{"class":110},"vim",[90,1724,1725],{"class":152}," ~\u002F.bashrc\n",[17,1727,1728],{},"在最底下加上下方的内容",[81,1730,1732],{"className":83,"code":1731,"language":85,"meta":59,"style":59},"\n# 设置 LD_LIBRARY_PATH\nexport LD_LIBRARY_PATH=\"\u002Fusr\u002Flocal\u002Flib:$LD_LIBRARY_PATH\"\n",[87,1733,1734,1738,1743],{"__ignoreMap":59},[90,1735,1736],{"class":92,"line":93},[90,1737,97],{"emptyLinePlaceholder":96},[90,1739,1740],{"class":92,"line":100},[90,1741,1742],{"class":103},"# 设置 LD_LIBRARY_PATH\n",[90,1744,1745,1748,1751,1754,1757,1760],{"class":92,"line":107},[90,1746,1747],{"class":156},"export",[90,1749,1750],{"class":644}," LD_LIBRARY_PATH",[90,1752,1753],{"class":156},"=",[90,1755,1756],{"class":152},"\"\u002Fusr\u002Flocal\u002Flib:",[90,1758,1759],{"class":644},"$LD_LIBRARY_PATH",[90,1761,1762],{"class":152},"\"\n",[862,1764,1765],{"start":100},[865,1766,1767],{},"其他的不用配置，开箱即用(可以配置一下pkg-config)，",[17,1769,1770],{},"检查是否安装成功：",[81,1772,1774],{"className":83,"code":1773,"language":85,"meta":59,"style":59},"opencv_version\n",[87,1775,1776],{"__ignoreMap":59},[90,1777,1778],{"class":92,"line":93},[90,1779,1773],{"class":110},[17,1781,1782],{},[57,1783],{"alt":59,"src":1784},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage56.webp",[62,1786,1788],{"id":1787},"测试opencv_cudacmake程序示例","测试OpenCV_CUDA(CMake程序示例)",[862,1790,1791,1798],{},[865,1792,1793,1794],{},"CMake是一定要掌握的，请看下方文档学习:",[32,1795,1797],{"href":1796},"\u002Fwiki\u002F2023-10-05-cplusplus-jiao-xue\u002F2200-cmake-gong-cheng-mu-ban","CMake C\u002FC++编译环境配置",[865,1799,1800],{},"如图测试完毕：",[17,1802,1803],{},[57,1804],{"alt":59,"src":1805},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage57.webp",[862,1807,1808],{"start":107},[865,1809,1810,1811,79],{},"下方是实例工程我已上传至GitHub供大家下载：(下方示例工程里的CMake模板不是最新的，可能不如新版功能齐全，不如新版各方面设计的更周到，如果想找最新版模板请看",[32,1812,1797],{"href":1796},[17,1814,1815],{},[32,1816,1817],{"href":1817,"rel":1818},"https:\u002F\u002Fgithub.com\u002Ftungchiahui\u002Fopencv_cuda_test",[500],[81,1820,1822],{"className":83,"code":1821,"language":85,"meta":59,"style":59},"\n# 克隆源码\ngit clone https:\u002F\u002Fgithub.com\u002Ftungchiahui\u002Fopencv_cuda_test.git\n\n# cd进工程\ncd opencv_cuda_test\n\n# cd进build目录\ncd build\n\n# 进行cmake编译\ncmake ..\n\n# 进行make编译+进行make install安装(最大线程)\nmake install -j$(grep -c ^processor \u002Fproc\u002Fcpuinfo)\n\n# 给予脚本执行权限\nsudo chmod a+x ..\u002Fscript\u002Fsetup_vinci_emis.bash\nsudo chmod a+x ..\u002Fscript\u002Fvinci_emis\nsudo chmod a+x ..\u002Finstall\u002F.setup.bash\n\n# 执行环境脚本\nsource ..\u002Fscript\u002Fsetup_vinci_emis.bash\n\n# 执行demo1二进制程序\n..\u002Fscript\u002Fvinci_emis run demo1\n",[87,1823,1824,1828,1833,1844,1848,1853,1860,1864,1869,1875,1879,1884,1891,1895,1900,1918,1922,1927,1940,1951,1962,1966,1971,1978,1982,1987],{"__ignoreMap":59},[90,1825,1826],{"class":92,"line":93},[90,1827,97],{"emptyLinePlaceholder":96},[90,1829,1830],{"class":92,"line":100},[90,1831,1832],{"class":103},"# 克隆源码\n",[90,1834,1835,1838,1841],{"class":92,"line":107},[90,1836,1837],{"class":110},"git",[90,1839,1840],{"class":152}," clone",[90,1842,1843],{"class":152}," https:\u002F\u002Fgithub.com\u002Ftungchiahui\u002Fopencv_cuda_test.git\n",[90,1845,1846],{"class":92,"line":114},[90,1847,97],{"emptyLinePlaceholder":96},[90,1849,1850],{"class":92,"line":119},[90,1851,1852],{"class":103},"# cd进工程\n",[90,1854,1855,1857],{"class":92,"line":125},[90,1856,546],{"class":131},[90,1858,1859],{"class":152}," opencv_cuda_test\n",[90,1861,1862],{"class":92,"line":135},[90,1863,97],{"emptyLinePlaceholder":96},[90,1865,1866],{"class":92,"line":140},[90,1867,1868],{"class":103},"# cd进build目录\n",[90,1870,1871,1873],{"class":92,"line":146},[90,1872,546],{"class":131},[90,1874,650],{"class":152},[90,1876,1877],{"class":92,"line":301},[90,1878,97],{"emptyLinePlaceholder":96},[90,1880,1881],{"class":92,"line":307},[90,1882,1883],{"class":103},"# 进行cmake编译\n",[90,1885,1886,1888],{"class":92,"line":318},[90,1887,1022],{"class":110},[90,1889,1890],{"class":152}," ..\n",[90,1892,1893],{"class":92,"line":349},[90,1894,97],{"emptyLinePlaceholder":96},[90,1896,1897],{"class":92,"line":363},[90,1898,1899],{"class":103},"# 进行make编译+进行make install安装(最大线程)\n",[90,1901,1902,1904,1906,1908,1910,1912,1914,1916],{"class":92,"line":374},[90,1903,1476],{"class":110},[90,1905,210],{"class":152},[90,1907,1533],{"class":131},[90,1909,1536],{"class":110},[90,1911,1214],{"class":131},[90,1913,1506],{"class":152},[90,1915,1509],{"class":152},[90,1917,1515],{"class":131},[90,1919,1920],{"class":92,"line":385},[90,1921,97],{"emptyLinePlaceholder":96},[90,1923,1924],{"class":92,"line":399},[90,1925,1926],{"class":103},"# 给予脚本执行权限\n",[90,1928,1929,1931,1934,1937],{"class":92,"line":1150},[90,1930,204],{"class":110},[90,1932,1933],{"class":152}," chmod",[90,1935,1936],{"class":152}," a+x",[90,1938,1939],{"class":152}," ..\u002Fscript\u002Fsetup_vinci_emis.bash\n",[90,1941,1942,1944,1946,1948],{"class":92,"line":1158},[90,1943,204],{"class":110},[90,1945,1933],{"class":152},[90,1947,1936],{"class":152},[90,1949,1950],{"class":152}," ..\u002Fscript\u002Fvinci_emis\n",[90,1952,1953,1955,1957,1959],{"class":92,"line":1166},[90,1954,204],{"class":110},[90,1956,1933],{"class":152},[90,1958,1936],{"class":152},[90,1960,1961],{"class":152}," ..\u002Finstall\u002F.setup.bash\n",[90,1963,1964],{"class":92,"line":1174},[90,1965,97],{"emptyLinePlaceholder":96},[90,1967,1968],{"class":92,"line":1182},[90,1969,1970],{"class":103},"# 执行环境脚本\n",[90,1972,1973,1976],{"class":92,"line":1190},[90,1974,1975],{"class":131},"source",[90,1977,1939],{"class":152},[90,1979,1980],{"class":92,"line":1198},[90,1981,97],{"emptyLinePlaceholder":96},[90,1983,1984],{"class":92,"line":1206},[90,1985,1986],{"class":103},"# 执行demo1二进制程序\n",[90,1988,1989,1992,1995,1998],{"class":92,"line":1224},[90,1990,1991],{"class":131},".",[90,1993,1994],{"class":152},".\u002Fscript\u002Fvinci_emis",[90,1996,1997],{"class":152}," run",[90,1999,2000],{"class":152}," demo1\n",[17,2002,2003,2006,2007,2010,2011,2005,2014,2017],{},[21,2004,2005],{},"或者","直接点击",[87,2008,2009],{},"Run","，",[87,2012,2013],{},"Start Debugging",[87,2015,2016],{},"Run Without Debugging","都可以。(已经将launch.json及task.json全部配置好了)(发现bug及时call我，call我之前，请看最新CMake模板是否已经修复了该bug，若未修复，再call我)",[17,2019,2020],{},[57,2021],{"alt":59,"src":2022},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage58.webp",[17,2024,2025],{},[57,2026],{"alt":59,"src":2027},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage59.webp",[17,2029,2030],{},"测试完毕",[17,2032,2033],{},[57,2034],{"alt":59,"src":2035},"https:\u002F\u002Fcdn.tungchiahui.cn\u002Ftungwebsite\u002Fassets\u002Fimages\u002F2023\u002F12\u002F10\u002Fimage60.webp",[62,2037,1358],{"id":2038},"常见问题-1",[609,2040,2042],{"id":2041},"cmake-jx编译遇到operator或权重weight相关问题","cmake -jx编译遇到operator!=或权重weight相关问题",[81,2044,2049],{"className":2045,"code":2047,"language":2048},[2046],"language-text","  这个问题大多发生在ubuntu20.04或者cuda12.2上，编译时添加contrib库，对应ros版本为noetic，opencv版本为4.8.0。\n\n  github上的讨论：\n","text",[87,2050,2047],{"__ignoreMap":59},[17,2052,2053],{},[32,2054,2055],{"href":2055,"rel":2056},"https:\u002F\u002Fgithub.com\u002Fros-perception\u002Fvision_opencv\u002Ftree\u002Fkinetic",[500],[17,2058,2059],{},"根据GitHub中的解决方案，将对应报错.hpp文件中的相应代码修改（若只是有一些WARNING那大可不必修改）：",[17,2061,2062,2065,2066],{},[87,2063,2064],{},"114 opencv\u002Fmodules\u002Fdnn\u002Fsrc\u002Fcuda4dnn\u002Fprimitives\u002Fnormalize_bbox.hpp 中 if (weight != 1.0)","改为 ",[87,2067,2068],{},"if (weight != static_cast\u003CT>(1.0))",[17,2070,2071],{},[87,2072,2073],{},"124 opencv\u002Fmodules\u002Fdnn\u002Fsrc\u002Fcuda4dnn\u002Fprimitives\u002Fregion.hpp 中if (nms_iou_threshold > 0)",[17,2075,2065,2076],{},[87,2077,2078],{},"if (nms_iou_threshold > static_cast\u003CT>(0))",[17,2080,2081],{},"再次编译",[81,2083,2085],{"className":83,"code":2084,"language":85,"meta":59,"style":59},"make -j16\n",[87,2086,2087],{"__ignoreMap":59},[90,2088,2089,2091],{"class":92,"line":93},[90,2090,1476],{"class":110},[90,2092,1562],{"class":131},[609,2094,2095],{"id":2095},"ros原装opencv与自己搭建的opencv_cuda冲突的问题",[17,2097,2098],{},"原因：ros自带的cv_bridge自动链接ros的opencv，而ros自带的opencv没有cuda加速，故报错。",[17,2100,2101],{},"Ubuntu允许多版本 opencv共存，不建议直接卸载opencv，可能导致相关环境异常。",[17,2103,2104],{},"解决方案：额外配置一个版本的cv_bridge进行opencv的链接",[1009,2106,2108],{"id":2107},"ros1","ROS1",[17,2110,2111],{},"解决方案：",[17,2113,2114,2115],{},"在",[32,2116,2119],{"href":2117,"rel":2118},"https:\u002F\u002Fgithub.com\u002Fros-perception\u002Fvision_opencv\u002Ftree\u002Fkinetic%E4%B8%AD%E4%B8%8B%E8%BD%BD%E5%AF%B9%E5%BA%94%E7%89%88%E6%9C%AC%E7%9A%84cv_bridge",[500],"https:\u002F\u002Fgithub.com\u002Fros-perception\u002Fvision_opencv\u002Ftree\u002Fkinetic中下载对应版本的cv_bridge",[17,2121,2122],{},"先对cv_bridge中的CmakeList.txt进行修改，OpencvDIR对应自己的opencv安装路径，并将修改包名：",[81,2124,2127],{"className":2125,"code":2126,"language":1022,"meta":59,"style":59},"language-cmake shiki shiki-themes github-light github-dark","project(cv_bridge_480)#修改为你的包名，加个版本号就可以\nset(OpenCV_DIR \"\u002Fhome\u002Fliu\u002Fopencv\u002Fopencv-4.8.0\")\nfind_package(OpenCV 4.8.0 REQUIRED\n  COMPONENTS\n    opencv_core\n    opencv_imgproc\n    opencv_imgcodecs\n  CONFIG\n)\n\n",[87,2128,2129,2140,2153,2161,2166,2171,2176,2181,2186],{"__ignoreMap":59},[90,2130,2131,2134,2137],{"class":92,"line":93},[90,2132,2133],{"class":156},"project",[90,2135,2136],{"class":644},"(cv_bridge_480)",[90,2138,2139],{"class":103},"#修改为你的包名，加个版本号就可以\n",[90,2141,2142,2145,2148,2151],{"class":92,"line":100},[90,2143,2144],{"class":156},"set",[90,2146,2147],{"class":644},"(OpenCV_DIR ",[90,2149,2150],{"class":152},"\"\u002Fhome\u002Fliu\u002Fopencv\u002Fopencv-4.8.0\"",[90,2152,1515],{"class":644},[90,2154,2155,2158],{"class":92,"line":107},[90,2156,2157],{"class":156},"find_package",[90,2159,2160],{"class":644},"(OpenCV 4.8.0 REQUIRED\n",[90,2162,2163],{"class":92,"line":114},[90,2164,2165],{"class":644},"  COMPONENTS\n",[90,2167,2168],{"class":92,"line":119},[90,2169,2170],{"class":644},"    opencv_core\n",[90,2172,2173],{"class":92,"line":125},[90,2174,2175],{"class":644},"    opencv_imgproc\n",[90,2177,2178],{"class":92,"line":135},[90,2179,2180],{"class":644},"    opencv_imgcodecs\n",[90,2182,2183],{"class":92,"line":140},[90,2184,2185],{"class":644},"  CONFIG\n",[90,2187,2188],{"class":92,"line":146},[90,2189,1515],{"class":644},[17,2191,2192],{},"修改package.xml中的包名",[81,2194,2198],{"className":2195,"code":2196,"language":2197,"meta":59,"style":59},"language-xml shiki shiki-themes github-light github-dark","  \u003Cname>cv_bridge_480\u003C\u002Fname>\n","xml",[87,2199,2200],{"__ignoreMap":59},[90,2201,2202,2205,2209,2212,2214],{"class":92,"line":93},[90,2203,2204],{"class":644},"  \u003C",[90,2206,2208],{"class":2207},"s9eBZ","name",[90,2210,2211],{"class":644},">cv_bridge_480\u003C\u002F",[90,2213,2208],{"class":2207},[90,2215,2216],{"class":644},">\n",[17,2218,2219],{},"此时将cv_bridge作为一个ros功能包进行编译，把包整体复制进你工作空间的src中进行编译",[81,2221,2223],{"className":2195,"code":2222,"language":2197,"meta":59,"style":59},"cp -rf .\u002Fcv_bridge ~\u002FYolo_Tensorrt_Demo\u002Fdemo01_test\u002Fsrc\ncatkin_make\n",[87,2224,2225,2230],{"__ignoreMap":59},[90,2226,2227],{"class":92,"line":93},[90,2228,2229],{"class":644},"cp -rf .\u002Fcv_bridge ~\u002FYolo_Tensorrt_Demo\u002Fdemo01_test\u002Fsrc\n",[90,2231,2232],{"class":92,"line":100},[90,2233,2234],{"class":644},"catkin_make\n",[17,2236,2237],{},"然后就可以将cv_bridge作为功能包使用了，在你原本的包CmakeLists中添加",[81,2239,2241],{"className":2125,"code":2240,"language":1022,"meta":59,"style":59},"find_package(cv_bridge_480)\n",[87,2242,2243],{"__ignoreMap":59},[90,2244,2245,2247],{"class":92,"line":93},[90,2246,2157],{"class":156},[90,2248,2249],{"class":644},"(cv_bridge_480)\n",[17,2251,2252],{},"package.xml:",[81,2254,2256],{"className":2195,"code":2255,"language":2197,"meta":59,"style":59},"\u003Cbuild_depend>cv_bridge_480\u003C\u002Fbuild_depend>\n\u003Cbuild_export_depend>cv_bridge_480\u003C\u002Fbuild_export_depend>\n\u003Cexec_depend>cv_bridge_480\u003C\u002Fexec_depend>\n",[87,2257,2258,2272,2285],{"__ignoreMap":59},[90,2259,2260,2263,2266,2268,2270],{"class":92,"line":93},[90,2261,2262],{"class":644},"\u003C",[90,2264,2265],{"class":2207},"build_depend",[90,2267,2211],{"class":644},[90,2269,2265],{"class":2207},[90,2271,2216],{"class":644},[90,2273,2274,2276,2279,2281,2283],{"class":92,"line":100},[90,2275,2262],{"class":644},[90,2277,2278],{"class":2207},"build_export_depend",[90,2280,2211],{"class":644},[90,2282,2278],{"class":2207},[90,2284,2216],{"class":644},[90,2286,2287,2289,2292,2294,2296],{"class":92,"line":107},[90,2288,2262],{"class":644},[90,2290,2291],{"class":2207},"exec_depend",[90,2293,2211],{"class":644},[90,2295,2291],{"class":2207},[90,2297,2216],{"class":644},[17,2299,2300],{},"到这里自定义的cv_bridge包就配好了",[17,2302,2303],{},"如果你还想在vscode中使用代码补全，添加路径一直到cv_bridge包的include就可以,我这里是另一个工作空间，都一样。",[81,2305,2309],{"className":2306,"code":2307,"language":2308,"meta":59,"style":59},"language-json shiki shiki-themes github-light github-dark","\"includePath\": [\n    \"\u002Fhome\u002Fliu\u002Fcv_bridge_ws\u002Fsrc\u002Fcv_bridge\u002Finclude\",\n    \"\u002Fhome\u002Fliu\u002Fcv_bridge_ws\u002Fsrc\u002Fcv_bridge\"\n\n]\n","json",[87,2310,2311,2319,2327,2332,2336],{"__ignoreMap":59},[90,2312,2313,2316],{"class":92,"line":93},[90,2314,2315],{"class":152},"\"includePath\"",[90,2317,2318],{"class":644},": [\n",[90,2320,2321,2324],{"class":92,"line":100},[90,2322,2323],{"class":152},"    \"\u002Fhome\u002Fliu\u002Fcv_bridge_ws\u002Fsrc\u002Fcv_bridge\u002Finclude\"",[90,2325,2326],{"class":644},",\n",[90,2328,2329],{"class":92,"line":107},[90,2330,2331],{"class":152},"    \"\u002Fhome\u002Fliu\u002Fcv_bridge_ws\u002Fsrc\u002Fcv_bridge\"\n",[90,2333,2334],{"class":92,"line":114},[90,2335,97],{"emptyLinePlaceholder":96},[90,2337,2338],{"class":92,"line":119},[90,2339,2340],{"class":644},"]\n",[1009,2342,2344],{"id":2343},"ros2","ROS2",[17,2346,2347,2348,2352],{},"详见",[32,2349,2351],{"href":2350},"\u002Fwiki\u002F2023-12-30-ros2-tutorial","ROS2机器人操作系统教程","中CV_Bridge章节.",[609,2354,2355],{"id":2355},"opencv编译爆内存的问题",[17,2357,2358],{},"解决方案：采用多核编译，一般采用make -j16 （这里16是CPU线程数，可以根据实际情况进行调整）即可解决，cpu线程越多，编译速度就越快",[1009,2360,2362],{"id":2361},"windows中","windows中：",[17,2364,2365],{},"Mingw：",[81,2367,2371],{"className":2368,"code":2369,"language":2370,"meta":59,"style":59},"language-PowerShell shiki shiki-themes github-light github-dark","mingw64-make -j16\n","PowerShell",[87,2372,2373],{"__ignoreMap":59},[90,2374,2375],{"class":92,"line":93},[90,2376,2369],{},[17,2378,2379],{},"值得注意的是，mingw并不支持windows上的opencv_contrib编译，这在configure一开始就会提示",[17,2381,2382],{},"Vs：",[17,2384,2385],{},[32,2386,2387],{"href":2387,"rel":2388},"https:\u002F\u002Fblog.csdn.net\u002Fhollyholly5\u002Farticle\u002Fdetails\u002F68062513",[500],[1009,2390,2392],{"id":2391},"linux中","linux中：",[81,2394,2396],{"className":83,"code":2395,"language":85,"meta":59,"style":59},"make -j$(grep -c ^processor \u002Fproc\u002Fcpuinfo)\n",[87,2397,2398],{"__ignoreMap":59},[90,2399,2400,2402,2404,2406,2408,2410,2412],{"class":92,"line":93},[90,2401,1476],{"class":110},[90,2403,1533],{"class":131},[90,2405,1536],{"class":110},[90,2407,1214],{"class":131},[90,2409,1506],{"class":152},[90,2411,1509],{"class":152},[90,2413,1515],{"class":131},[12,2415,50],{"id":2416},"windows",[17,2418,2347,2419],{},[32,2420,2423],{"href":2421,"rel":2422},"https:\u002F\u002Fsdutvincirobot.feishu.cn\u002Fwiki\u002FLm6XwbEJyi099ykqyV4cvirPn2f",[500],"使用OpenCV推理Yolov8模型（C++）",[2425,2426,2427],"style",{},"html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html pre.shiki code .sJ8bj, html code.shiki .sJ8bj{--shiki-default:#6A737D;--shiki-dark:#6A737D}html pre.shiki code .sScJk, html code.shiki .sScJk{--shiki-default:#6F42C1;--shiki-dark:#B392F0}html pre.shiki code .sj4cs, html code.shiki .sj4cs{--shiki-default:#005CC5;--shiki-dark:#79B8FF}html pre.shiki code .sZZnC, html code.shiki .sZZnC{--shiki-default:#032F62;--shiki-dark:#9ECBFF}html pre.shiki code .szBVR, html code.shiki .szBVR{--shiki-default:#D73A49;--shiki-dark:#F97583}html pre.shiki code .sVt8B, html code.shiki .sVt8B{--shiki-default:#24292E;--shiki-dark:#E1E4E8}html pre.shiki code .s9eBZ, html code.shiki .s9eBZ{--shiki-default:#22863A;--shiki-dark:#85E89D}",{"title":59,"searchDepth":100,"depth":100,"links":2429},[2430,2431],{"id":14,"depth":107,"text":15},{"id":2416,"depth":107,"text":50},0,"0500","2023-12-10","2023-12-10-dian-kong-shi-jue-huan-jing-da-jian","\u002Fwiki\u002F2023-12-10-dian-kong-shi-jue-huan-jing-da-jian","电控视觉环境搭建","md",false,{},"\u002Fwiki\u002F2023-12-10-dian-kong-shi-jue-huan-jing-da-jian\u002F0500-opencv-cuda-huan-jing-da-jian",{"title":5,"description":59},"wiki\u002F2023-12-10-电控视觉环境搭建\u002F0500-OpenCV__CUDA环境搭建","W0r2Wrpso-elRQNAQagTCxgIEPQ6A_Qf5a9HUt3jSuY",[2446,2452,2458,2464,2470,2472,2478,2484,2490,2496],{"path":2447,"stem":2448,"title":2449,"authors":2450,"date":2434,"chapterOrder":2451,"chapterDepth":2432,"docKey":2435,"docRoot":2436,"docTitle":2437,"isWikiDoc":96,"isWikiIndex":2439},"\u002Fwiki\u002F2023-12-10-dian-kong-shi-jue-huan-jing-da-jian\u002F0100-c-c-huan-jing-da-jian","wiki\u002F2023-12-10-电控视觉环境搭建\u002F0100-C_C++环境搭建","C\u002FC++环境搭建",[7],"0100",{"path":2453,"stem":2454,"title":2455,"authors":2456,"date":2434,"chapterOrder":2457,"chapterDepth":2432,"docKey":2435,"docRoot":2436,"docTitle":2437,"isWikiDoc":96,"isWikiIndex":2439},"\u002Fwiki\u002F2023-12-10-dian-kong-shi-jue-huan-jing-da-jian\u002F0200-armkeilmdk-arm-dan-pian-ji-huan-jing-da-jian","wiki\u002F2023-12-10-电控视觉环境搭建\u002F0200-ARMKeilMDK(ARM单片机环境搭建)","ARM Keil MDK(ARM单片机环境搭建)",[7],"0200",{"path":2459,"stem":2460,"title":2461,"authors":2462,"date":2434,"chapterOrder":2463,"chapterDepth":2432,"docKey":2435,"docRoot":2436,"docTitle":2437,"isWikiDoc":96,"isWikiIndex":2439},"\u002Fwiki\u002F2023-12-10-dian-kong-shi-jue-huan-jing-da-jian\u002F0300-linux-ji-ben-pei-zhi","wiki\u002F2023-12-10-电控视觉环境搭建\u002F0300-Linux基本配置","Linux基本配置",[7],"0300",{"path":2465,"stem":2466,"title":2467,"authors":2468,"date":2434,"chapterOrder":2469,"chapterDepth":2432,"docKey":2435,"docRoot":2436,"docTitle":2437,"isWikiDoc":96,"isWikiIndex":2439},"\u002Fwiki\u002F2023-12-10-dian-kong-shi-jue-huan-jing-da-jian\u002F0400-cmake-gong-cheng-da-jian","wiki\u002F2023-12-10-电控视觉环境搭建\u002F0400-CMake工程搭建","CMake工程搭建",[7],"0400",{"path":2441,"stem":2443,"title":5,"authors":2471,"date":2434,"chapterOrder":2433,"chapterDepth":2432,"docKey":2435,"docRoot":2436,"docTitle":2437,"isWikiDoc":96,"isWikiIndex":2439},[7],{"path":2473,"stem":2474,"title":2475,"authors":2476,"date":2434,"chapterOrder":2477,"chapterDepth":2432,"docKey":2435,"docRoot":2436,"docTitle":2437,"isWikiDoc":96,"isWikiIndex":2439},"\u002Fwiki\u002F2023-12-10-dian-kong-shi-jue-huan-jing-da-jian\u002F0600-yolo-huan-jing-da-jian","wiki\u002F2023-12-10-电控视觉环境搭建\u002F0600-YOLO环境搭建","YOLO环境搭建",[7],"0600",{"path":2479,"stem":2480,"title":2481,"authors":2482,"date":2434,"chapterOrder":2483,"chapterDepth":2432,"docKey":2435,"docRoot":2436,"docTitle":2437,"isWikiDoc":96,"isWikiIndex":2439},"\u002Fwiki\u002F2023-12-10-dian-kong-shi-jue-huan-jing-da-jian\u002F0700-ros-huan-jing-da-jian","wiki\u002F2023-12-10-电控视觉环境搭建\u002F0700-ROS环境搭建","ROS环境搭建",[7],"0700",{"path":2485,"stem":2486,"title":2487,"authors":2488,"date":2434,"chapterOrder":2489,"chapterDepth":2432,"docKey":2435,"docRoot":2436,"docTitle":2437,"isWikiDoc":96,"isWikiIndex":2439},"\u002Fwiki\u002F2023-12-10-dian-kong-shi-jue-huan-jing-da-jian\u002F0800-qt-huan-jing-da-jian","wiki\u002F2023-12-10-电控视觉环境搭建\u002F0800-QT环境搭建","QT环境搭建",[7],"0800",{"path":2491,"stem":2492,"title":2493,"authors":2494,"date":2434,"chapterOrder":2495,"chapterDepth":2432,"docKey":2435,"docRoot":2436,"docTitle":2437,"isWikiDoc":96,"isWikiIndex":2439},"\u002Fwiki\u002F2023-12-10-dian-kong-shi-jue-huan-jing-da-jian\u002F0900-docker-huan-jing-da-jian","wiki\u002F2023-12-10-电控视觉环境搭建\u002F0900-Docker环境搭建","Docker环境搭建",[7],"0900",{"path":2436,"stem":2497,"title":2437,"authors":2498,"date":2434,"chapterOrder":2499,"chapterDepth":2432,"docKey":2435,"docRoot":2436,"docTitle":2437,"isWikiDoc":96,"isWikiIndex":96},"wiki\u002F2023-12-10-电控视觉环境搭建\u002Findex",[7],null,[2501,2503,2506,2509],{"name":7,"image":2502},"\u002Fimages\u002Fmember_photo\u002F董佳辉.jpg",{"name":2504,"image":2505},"宫金良","\u002Fimages\u002Fmember_photo\u002F宫金良.jpg",{"name":2507,"image":2508},"巩丽","\u002Fimages\u002Fmember_photo\u002F巩丽.png",{"name":2510,"image":2511},"张彦斐","\u002Fimages\u002Fmember_photo\u002F张彦斐.jpg",1792431900883]