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