最简最速!C++版OpenCV安装配置教程Win/Mac!!!

news/2024/11/13 15:05:16/文章来源:https://www.cnblogs.com/SkyXZ/p/18385688

Clion+OpenCV(C++版)开发环境配置教程Win/Mac

        平时在学习和比赛的时候都是使用的Python版本的OpenCV,最近遇到了一个项目使用的上位机性能有限于是决定视觉方面使用C++的OpenCV来节约上位机资源提高运行的速度,在查阅了网上的各种资料后发现这些资料参差不齐有些博客的方法绕来绕去,有些博客每一步也不太详细,于是决定自己记录分享一下自己配置环境的过程以供大家参考。

Windows配置方法

一、下载相关软件和工具

        这里给出一些开发配置环境过程中需要用到的软件以及工具,在这里给出本人亲测可以使用的链接,如果打不开或者下载速度慢可以试试Science on the Internet

​      · Clion:CLion: A Cross-Platform IDE for C and C++ by JetBrains

​      · OpenCV:OpenCV 4.10.0_Github

        下载Winodws版本的exe安装文件

      · Cmake:Cmake_Binary distributions

​        在Binary distributions这一栏中选择适合自己的版本进行下载

1

  注意事项:

​     · Clion和OpenCV建议下载最新的版本

​     · 如果OpenCV需要使用前版本的话需要额外重新下载MinGW

​     · 所有安装路径不要出现中文!一定不要有中文!!!

二、安装过程

!!!再次检查自己电脑中是否已经下载好了Clion、OpenCV、Cmake的安装包。!!!

(一)Clion的安装

        Clion 是 Jetson 推出的一个C和C++集成开发环境,其可以支持嵌入式开发,虽然这个软件是收费的但如果你是学生或者教育工作者的话均可以申请免费使用但是速度通过速度较慢大致需要1Days的样子,还有一种方式在此不做过多的赘叙(为何你不看看万能的Tao宝呢???)同时由于Clion自带MinGW,所以其实配置C语言环境的过程中不需要像其他网上的教程所说重新下载一遍MinGW!!!

        Clion的安装较为简单,在此就不详细展开唯一要注意的便是在安装的界面中记得勾选"添加Bin文件到PATH"免得后期自己添加过于麻烦,只不过安装完成之后需要重启一下更新系统环境变量

2

(二)下载编译OpenCV

        接下来打开我们从Github下载的OpenCV"opencv-4.10.0-windows.exe"安装包,双击运行之后会让读者选择一个目录解压生成一个OpenCV的文件包,里面有两个文件夹一个"build"是官方已经预编译好可以直接使用的C++功能包,还有一个"sources"是对应的源码。具体如下图:

3

        虽然我们可以直接使用官方编译好的文件进行开发,但是我们自己电脑Clion的MinGW和其他环境与已经编译好的不匹配容易出现一些比较奇怪的问题,因此建议大家重新进行编译,这时就需要用到我们的Cmake了,我们打开我们最开始下载的Cmake安装包,在Bin文件中可以找到"cmake_gui.exe"这个软件双击打开。

4

        打开Cmake后接着我们把Clion自带的MinGW添加到系统环境变量用以编译,首先打开系统设置,在搜索框搜索"环境"选择编辑系统环境变量,在弹出的窗口选择"环境变量"一项

ocd2

        接着在下方"系统变量"窗格双击"Path"即可进入系统环境变量的编辑窗口

ocd3

        接着在弹出的窗口点击浏览后找到Clion的安装路径选择"bin"->"mingw"->"bin"即可

5

        添加MinGw到环境变量后我们便可以开始编译了,我们打开Cmake,在第一栏路径中选择我们一开始解压生成的OpenCV的源码文件夹"sources",接着在第三栏中添加一个编译文件的存放地址,这个地址可以自主选择建议在opencv源码的统计目录下创建一个新的易于分辨的文件夹存放,接着便可以点击左下角的Configure进行配置了(第一次点击会弹出编译选项,在下拉框中选择MinGW MakeFiles后点击Finish即可开始配置)

6 7

        在这个过程中可能会出现编译失败,这时我们不要着急,一般会出现的报错只有两种第一种是一开始会提示找不到MinGW这种一般是环境变量添加失败导致的,如果检查之后发现环境变量没有问题的话可以重启一下电脑更新配置,然后如果是在配置过程中报错或者是失败一般是源码中的ffmpeg文件夹缺少文件编译器自动下载失败(没XXXX的话会很慢甚至失败,建议从log中复制地址到浏览器自行下载后添加进opencv源码中的ffmpeg文件夹),每次重新开始配置的话记得删掉编译的文件夹!!!(删掉存放目录就好)避免之前的报错对本次产生影响。

    如果log窗口显示(Configure Done)即配置成功。

8

    接下来我们便可以点击"Generate"来生成MakeFiles,出现"Generate Done!"即生成成功

9

        这时我们便可以打开我们创建的编译目录(我的叫mingw_build),接着在当前的文件夹打开CMD后(在文件夹上方路径窗格输入CMD即可在当前文件夹路径打开CMD)在出现的CMD窗口中输入"mingw32-make -j4"即可开始编译(-j4为使用4线程进行编译的意思,如果电脑配置较高可以适当改大编译的线程数来加速编译)

10

    如图便开始了编译

11

        中间没有出现红色的报错即编译完成,如果中间有报错有可能是因为MinGw与OpenCV版本不兼容,最新的OpenCV与最新的CLion中自带的MinGW是可以完美适配的如果编译出现问题可以查看版本来适当升高或者降低MinGW/OpenCV的版本

13

    编译没有出错后我们便可以再次输入"mingw32-make install"来生成我们编译好的环境安装包

14

    这个过程一般不会报错

14

    如下图即为安装完成,接着我们把编译生成的环境安装包的bin文件夹("opencv"->"mingw_build"->"install"->"x64"->"mingw"->"bin")添加到环境变量即可

15

    至此!Windows下OpenCV的C++版本已经安装完成啦,在Clion中的使用方法请看最后一节

Mac配置方法

        Mac电脑运行的Mac OS的内核是由Unix演化而来的,因此Mac系统也有着和Linux一样的包管理工具,最知名的便是HomeBrew,通过这一个工具我们便可以一键配置好OpenCV的开发环境非常的便捷。想要安装OpenCV我们需要先安装HomeBrew,接下来我们便一步一步优雅的配置OpenCV的环境。

#首先检查电脑中有无HomeBrew的环境
brew -v  #有输出的话便代表电脑中存在HomeBrew
#如果有HomeBrew,先进行卸载
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/uninstall.sh)"
#类似于ROS,HomeBrew也有大神做了一个一键自动化安装脚本(但可能需要Science on the Internet)
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" #根据提示一步步安装即可

    安装完HomeBrew后我们便可以一行命令安装好OpenCV啦

brew install opencv     #安装OpenCV

    耐心等待运行完成即可

至此!Mac下OpenCV的C++版本已经安装完成啦,在Clion中的使用方法请看最后一节

测试OpenCV

    我们在Clion中新建一个工程,然后修改默认生成的CmakeLists文件

cmake_minimum_required(VERSION 3.19)
project(untitled)set(CMAKE_CXX_STANDARD 11)find_package(OpenCV)include_directories(${OpenCV_INCLUDE_DIRS})add_executable(untitled main.cpp)target_link_libraries(untitled ${OpenCV_LIBS})

    接着运行以下代码

#include <iostream>
#include <opencv2/opencv.hpp>using namespace std;
using namespace cv;int main() {Mat srcImage = imread("你的图片路径");if (!srcImage.data) {std::cout << "Image not loaded";return -1;}imshow("image", srcImage);waitKey(0);return 0;
}

    无报错且正常显示了图片即代表安装成功!!!

可能出现的报错

  1. 运行brew install opencv报错:Error: /usr/local/opt/qt is not a valid keg

    首先将/usr/local/opt/qt文件夹下的内容进行删除(建议备份一下):

    # 拷贝来进行备份,将xxxxx替换为你的用户名
    cp -r /usr/local/opt/qt /Users/xxxxx/
    # 删除文件,如果需要root权限就sudo一下
    rm -r /usr/local/opt/qt
    

    根据brew doctor的提示,建立符号连接:

     brew link --overwrite qt
    

    然后再运行安装或更新命令就可以了

     brew install qt# 或brew upgrade
    

大家在配置的过程中遇到了什么问题欢迎来找我解决或者找我完善补充本教程!

大家在配置的过程中遇到了什么问题欢迎来找我解决或者找我完善补充本教程!

大家在配置的过程中遇到了什么问题欢迎来找我解决或者找完我完善补充本教程!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/788778.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

不可不知的WPF画笔(Brush)

在WPF中,屏幕上的所有内容,都是通过画笔(Brush)画上去的。如按钮的背景色,边框,文本框的前景和形状填充。借助画笔,可以绘制页面上的所有UI对象。不同画笔具有不同类型的输出( 如:某些画笔使用纯色绘制区域,其他画笔使用渐变、图案、图像或绘图)。在WPF中,屏幕上的…

缓存介绍

从业务层面上的堆数据库下性能瓶颈的解决方案: 分库分表、读写分离 程序员修神之路--略懂数据库集群读写分离而已缓存 缓存 (Cache):本质是数据交换的一段缓冲区,也可以称为一种存储数据的组件,主要用于减小数据交换双方速度不匹配的问题。 缓存在计算机世界里是一个常见并…

开源的工作流系统突出优点总结

随时欢迎大家一起了解开源的工作流系统的突出优势和特点。当前,想要实现高效率的办公,可以一起来了解低代码技术平台、开源的工作流系统的相关特点和功能优势。作为较受职场喜爱的平台产品,低代码技术平台拥有可视化才做界面、灵活、好维护操作等多个优势特点,在推动企业流…

2024年最新版Typora免费使用教程心得

在数字化时代,写作已成为我们日常沟通、知识分享的重要手段。然而,繁琐的排版格式常常让人望而却步。幸运的是,Markdown编辑器以其简洁的语法和高效的排版功能,为我们带来了福音。Typora是一款功能强大的文本编辑器,它采用所见即所得的编辑方式,能够让用户快速地编辑各种…

P10786 [NOI2024] 百万富翁

讲解 P10786 [NOI2024] 百万富翁。先爆搜出 t>=9 的部分分,然后考虑使用动态规划算法进行常数优化跑出答案。思路: 先考虑 Sub1 的部分分,暴力算法:暴力询问所有 \(i<j\) 的数对 \((i,j)\)。 则一个 \(i\) 为最大值当且仅当 \((i,j)\) 的返回值都是 \(i\) 且在 \(i\)…

用我十多年的“奇葩”经验,给在“挂吊瓶”的博客园几点建议

初识博客园 我是08年开始接触开发的,一开始涉及的就是.net和java,记得那会好像是jar6来着,net嘛还是2.0 那时候包括现在,找资料很多时候会找到博客园来 一开始我以为博客园是很多博主成立的一个联盟,就是各自弄一个博客系统,然后公用一个域名 为啥会这么想呢? 因为我看高…

基于深度学习网络的USB摄像头实时视频采集与水果识别matlab仿真

1.算法运行效果图预览 (完整程序运行后无水印)将usb摄像头对准一个播放不同水果图片的显示器,然后进行识别,识别结果如下: 本课题中,使用的USB摄像头为:2.算法运行软件版本 matlab2022a3.部分核心程序 (完整版代码包含详细中文注释和操作步骤视频)程序中包括MATLAB读取摄…

Android 常用的性能分析工具详解:GPU呈现模式

此篇将重点介绍几种常用的Android性能分析工具: 一、Logcat 日志 选取Tag=ActivityManager,可以粗略地知道界面Displaying的时间消耗。当我们打开一个Activity的时候,log会打印一串log如下: I/ActivityManager﹕ Displayed xxx.xxx.xxx/TestActivity: +1s272ms (total +3s…

AI - 一文了解AIOps的含义、特点与功用

AIOps定义 AIOps是智能运维(Artificial Intelligence forITOperations)的英文缩写。 当今,专业厂商根据自身理解和商业目的,分别给出了各具特色的AIOps定义。 主要关键字:IT运维、人工智能 (AI)、机器学习(ML)、自然语言处理(NLP)、大数据、数据分析、运营效率等 以下…

两种解决powerdesigner概念模型转物理模型报字段重复错误的方法

问题 使用 powerdesigner 概念模型转物理模型时会报一个不能重复的错误解决方法 一、取消勾选Unique code取消勾选以后保存,再一次生成物理模型。 二、取消勾选Entity Attribute,不对属性进行检查 如果Unique code取消勾选后依旧不行,可以尝试第二种解决办法。取消勾选以后点…

AT cf17 final J Tree MST

AT cf17 final J Tree MST 考场上想出的黑题,然而写挂了…… 思路 考场推出 boruvka 算法,会的直接跳过就好。 结论:一个点向另外一个点连出的最小边,一定在最小生成树上。 证明:参考 Kruskal 生成树的流程,若当前边(最小边)不在最小生成树上,表明边的两端已经在同一个…