当前位置: 首页 > news >正文

网站做用户记录广州网站建设公司品牌

网站做用户记录,广州网站建设公司品牌,咨询公司招聘条件,网络软文写作前言 第一次搭建OpenCV开发环境的时候各种报错#xff0c;内心那个烦啊#xff0c;简直了。当时只能针对某个特定的错误去寻找特定的解决方法#xff0c;在OpenCV构建过程中出现最多的问题就是各个模块文件的下载问题#xff0c;本质上这类问题的解决思路都是一样的#…前言 第一次搭建OpenCV开发环境的时候各种报错内心那个烦啊简直了。当时只能针对某个特定的错误去寻找特定的解决方法在OpenCV构建过程中出现最多的问题就是各个模块文件的下载问题本质上这类问题的解决思路都是一样的奈何我装完了才意识到。 文件下载 构建OpenCV的源码编译环境除了基本的编译环境外还需要下面几个东西 CUDA工具包cuDNN库opencv源码opencv_contrib源码注意下载版本需要与opencv的版本保持一致opencv_3rdparty源码CMake NVIDIA的网页浏览有点慢但是下载速度还可以cuDNN下载需要注册NVIDIA的会员。OpenCV的下载速度就比较闹心了从github拉取贼慢但是可以使用油猴安装github的脚本提高拉取速度也可以在码云里面搜索合适的镜像拉取。CUDA的安装就不写了cuDNN的安装是将下载的文件解压到CUDA的安装目下例如我的CUDA的安装目录是 D:\NVIDIA GPU Computing Toolkit\CUDA\v11.1 ,cuDNN解压的目录也是这个。 想省事的可以直接使用我打包好的 opencv-4.5.1这个压缩包已经解决了我所遇到的所有关于下载错误的问题应该可以直接配置如果出现其他错误就自行搜索解决方法。 其他几个包 opencv_contrib-4.5.1 opencv_3rdparty_part1 opencv_3rdparty_part2 配置MSVC和CUDA编译环境下的OpenCV项目 步骤一 注意这个目录结构后面会频繁的在这几个目录中切换容易搞混。我测试的目录是 F:/Desktop/test在这个目录下面有三个opencv相关的源码。 友情提示一下,在准备自己的目录结构之前保证至少有30G左右的硬盘空间如果你打算同时编译Debug和Release版本的要多大的空间你懂的。我有一次辛辛苦苦编译了好几个小时到快结束的时候失败了这都是血泪史啊。运行 CMake 后首先设置 opencv 的源码目录然后设置构建目录勾选分组以便查看构建选项如果没有提前创建构建目录那么在 Configure 时CMake会询问是否创建目录随后就是设置编译环境的相关配置根据你自己需要进行设置即可最后点击 Finish 进行初次配置。 初次配置过程中通常都会出现错误第一个错误就是 Python 版本问题这个错误不用管后面配置时会自动得到修正。 步骤二重要 然后就是比较常见的 ippicv 和 FFmpeg 文件下载错误这类错误基本占据了整个 OpenCV 构建过程中的一半幸运的是这类错误解决思路是一致的掌握这个解决思路以后安装就会非常容易。ippicv 的操作过程忘记截图了我就以 FFmpeg 的修改作为例子简单说明。 CMake-GUI错误信息解读 首先看看 CMake 给出的错误信息这里给出了几个比较关键的信息 是哪一个文件下载失败了去哪儿看下载错误的日志; (ps正确的位置是CMake刚开始配置的build目录下下面的截图是之前测试的名称不对。)最后调用错误的位置。 下面是FFmpeg的另外两个错误错误都是类似的。 下载错误日志解读 下载错误日志的位置去哪儿找在前面已经提过了找到后可以看到具体的错误操作。每一个文件下载错误都有三个关键的地方 错误的文件名错误文件的MD5校验值下载文件存放在什么位置从图里面可以看出存放的位置其实就是在opencv源码目录中新建了一个 .cache 目录然后将下载的文件存放在所属模块目录下而文件名的形式是 “MD5校验值 - 文件名” 迷之操作重要 查询Git分支号 从CMake-GUI的错误信息读取中我们看到与FFmpeg相关的三个错误调用堆栈最后的位置是 3rdparty/ffmpeg/ffmpeg.cmake:20 此时的上层目录是opencv的源码目录。既然知道了位置那就去这个文件看看到底是个什么鬼看下图注意文件所在的位置。这个文件开始有4条关键的语句通过命名我们可以知道第一条语句是Git的分支号第二条语句是FFmpeg的32位库文件MD5校验值第三条语句是FFmpeg的64位库文件MD5校验值第四条语句是FFmpeg的cmake文件MD5校验值。 文件拷贝 首先使用命令行终端进入到已经拉取的opencv_3rdparty目录下 cd /d F:/Desktop/test/opencv_3rdparty/ 然后通过Git命令切换分支到上面这个过程查询的分支号 git checkout 6152e132572dfdaa32887eabeb7199bef49b14dc 从下载错误的日志中我们已经知道了ffmpeg下载的文件应该存放在什么位置先将那个存放位置的所有内容删掉 在切换分支以后的opencv_3rdparty目录下找到下载错误的文件并将其拷贝到上一个操作中的目录中 获取并更新MD5校验值 从下载错误的日志我们还知道文件名的形式应该是“MD5校验值-文件名”因此我们需要先获取MD5校验值然后进行文件的重命名操作。 获取MD5的可以直接使用命令行,然后手动进行文件重命名 certutil.exe -hashfile “文件名” md5 我嫌麻烦写了个简单的Python脚本,这个脚本的功能就是获取脚本文件所在目录下的所有文件的MD5校验值并进行重命名操作 import hashlib import osdef TraverseFile():return (file for root, dirs, files in os.walk(.) for file in filesif RenameFile.py ! file)def RenameFile(files):for file in files:md5 hashlib.md5()with open(file, rb) as file_detect:for data in iter(lambda: file_detect.read(8096), b):md5.update(data)result md5.hexdigest()with open(md5.txt, a) as write_result:write_result.write(file : result \n)os.rename(file, result - file)RenameFile(TraverseFile())知道了MD5校验值以后还需要回到最终调用错误的那个文件(就是获取Git分支号的文件)中将MD5的校验值更新一下这里更新的时候注意别改错了否则就会校验失败那么CMake仍然会去下载文件 更新完毕后我们再次执行 configure 操作可以发现错误已经消失。只要后续遇到所有类似下载错误都按这个分析过程来处理基本上可以保证解决大部分下载失败的问题 步骤三 步骤三主要是给OpenCV 配置一些额外的模块在搜索框中输入 “extra”,然后在对应的值中写入opencv_contrib中modules的路径注意CMake的路径是“/“形式然后再次进行 configure过程依然会有错误。按照步骤二的操作一步一步解决即可不过需要注意的是引入opencv_contrib后调用堆栈最后位置给出的是全路径要找Git分支号和更新MD5校验值需要按照这个路径查找而不是opencv的源码目录中查找。 步骤四 步骤四是配置OpenCV的CUDA构建选项在搜索框中输入 “CUDA”将CUDA相关的选项都勾选上再次重新进行 configure 如果之前CUDA安装顺利这里应该也非常顺利。最后点击 configure 旁边的 Generate 生成OpenCV的编译项目。 步骤五 步骤5是生成对应编译环境的OpenCV项目并对项目编译生成运行库。项目生成后我们使用Visual Studio对其进行编译。找到 CMakeTargets 目录下的 ALL_BUILD配置生成的库为Debug或者Release然后进行编译编译完成后继续编译 INSTALL然后会在最开始的构建目录下生成install文件目录将这个目录的内容拷贝到指定的地方然后添加环境变量就可以使用啦 配置MinGW编译环境下的OpenCV项目 配置MinGW编译环境下的OpenCV项目与MSVC编译环境类似主要区别是在步骤一、步骤四以及步骤五。由于在Windows系统下CUDA不支持MinGW的编译环境因此没有步骤四那么主要区别就是步骤一及步骤五。 步骤一 步骤五 由于使用MinGW编译环境因此在编译生成运行库的时候有所不同。 首先命令行进入到构建目录中 cd /d F:/Desktop/test/opencv/build 然后使用 mingw32-make 开始编译 mingw32-make -j8 最后使用 mingw32-make 生成安装目录即可 mingw32-make install 简单测试 Visual Studio 2019 - MSVC #include opencv2/core.hpp #include opencv2/highgui.hpp #include opencv2/imgcodecs.hpp#ifndef NDEBUG // Debug #pragma comment(lib, opencv_core451d.lib) #pragma comment(lib, opencv_imgcodecs451d.lib) #pragma comment(lib, opencv_highgui451d.lib) #else // Release #pragma comment(lib, opencv_core451.lib) #pragma comment(lib, opencv_imgcodecs451.lib) #pragma comment(lib, opencv_highgui451.lib) #endif // !NDEBUGint main() {cv::Mat img cv::imread(cplusplus.png);cv::namedWindow(test, cv::WINDOW_AUTOSIZE);cv::imshow(test, img);cv::waitKey(0);cv::destroyAllWindows();return 0; }CLion - MinGW # CMakeLists.txtcmake_minimum_required(VERSION 3.17)project(Test_OpenCV VERSION 1.0.0 LANGUAGES CXX)set(CMAKE_CXX_STANDARD 14)add_executable(${CMAKE_PROJECT_NAME}) target_include_directories(${CMAKE_PROJECT_NAME} PRIVATE D:/OpenCV4.5.1/MinGW_8_x64/include/) file(GLOB SRCS RELATIVE ${CMAKE_CURRENT_SOURCE_DIR} *.cpp) target_sources(${CMAKE_PROJECT_NAME} PRIVATE ${SRCS}) file(GLOB LIBS D:/OpenCV4.5.1/MinGW_8_x64/x64/mingw/bin/*.dll) target_link_libraries(${CMAKE_PROJECT_NAME} PRIVATE ${LIBS})#include opencv2/core.hpp #include opencv2/highgui.hpp #include opencv2/imgcodecs.hppint main() {cv::Mat img cv::imread(cplusplus.png);cv::namedWindow(test, cv::WINDOW_AUTOSIZE);cv::imshow(test, img);cv::waitKey(0);cv::destroyAllWindows();return 0; }更新2021-01-13 又发现了新的坑。。。这两天用python测试了一下opencv发现无法正确导入包试了一圈都不行它也不报什么错误信息我多试了几次后发现C盘空间满了。。分析了一下磁盘才发现它会在C:\Users\用户名\AppData\Local\CrashDumps下会产生较大的崩溃文件崩溃一次写一个文件。后来我发现编译源码时INSTALL的日志里面了拷贝了生成的文件到python的库里面又想起我之前已经单独安装过python版本的opencv了。 这么来看应该是文件被覆盖了导致的崩溃。由于python版本的文件已经被覆盖因此需要将原来python版本的opencv彻底卸载掉卸载掉之后在Visual Studio中执行 “生成INSTALL” 操作然后应该就好使了。 在找上面的问题时我偶然间发现python版本的opencv的 __init__.py会加载一个相同目录下的config.py的配置文件这个配置文件里面其实就是库的路径默认写的是编译后Install的目录如果你在“生成INSTALL”时没有修改生成的路径那么默认是在编译目录下的这时候如果你把整个文件夹拷走了那么就会出现错误“ImportError: DLL load failed while importing cv2: 找不到指定的模块”这时候修改一下路径就行同时注意编译时是Debug版本的opencv库的路径就必须指向Debug版本的路径。要不是上面的事故这个地方我估计只有等我删了编译后的文件夹我才能发现。。。 在VSCode中发现opencv没有自动补全添加自动补全的额外路径即可有pylint的波浪线也可以通过下面的配置解决。 python.linting.pylintArgs: [--errors-only --generated-membersnumpy.* ,torch.* ,cv2.* , cv.*],python.autoComplete.extraPaths: [D:/Python3/Lib/site-packages/cv2/python-3.8,],本文博客地址 欢迎来我的自建博客看看
http://www.pierceye.com/news/943234/

相关文章:

  • 温州红酒网站建设长沙移动网站建设
  • 如何制作网站?企业网站制作步骤
  • 桓台县旅游网站建设购物网站建设技术难点
  • 单页网站推广网站qq链接怎么做
  • wordpress仿站步骤平乡网站建设
  • 青岛高端网站建设公司新网站seo技术
  • 手机网站后台甘肃网络推广技巧
  • 做co网站阿里云建站方案
  • 如何做网站首页优化怎么查网站点击量
  • 北京网站制作百度推广潜江资讯网二手房出售
  • 北京建网站软件深圳企业网站
  • 网站关键词互点备案网站简介怎么写
  • 网站建设报告书范文哈尔滨网站公司哪家好
  • 景观毕业设计作品网站公司网站销售平台建设费分录
  • 品牌网站建设还来大蝌蚪华为手机WordPress
  • 东莞制作企业网站公司网站营销活动页面制作
  • 有中文网站 怎么做英文网站企业网站建设 价格
  • 网络游戏网站开发建设工程施工合同样本
  • 陕西网站制作公司泸州中泸集团建设有限公司网站
  • 营销型网站建设的概念电子商务公司最低注册资本
  • 计划书网站推广的目录怎么做太原便宜做网站的公司哪家好
  • wordpress 直播插件麒麟seo外推软件
  • 网站检测报告哪里做寰宇seo
  • 徐州微信网站建设网站建设员课程
  • 做现货需要关注的网站wordpress+游戏网站
  • 佛山北京网站建设网络营销推广有哪些方法
  • 免费注册网站网址合肥网站建设第一品牌
  • 青州建网站网站建设seo虾哥网络
  • 网站框架怎么设计wordpress新闻页面模板下载
  • 国外网站平台做微信公众号的是哪个网站