首页 星云 工具 资源 星选 资讯 热门工具
:

PDF转图片 完全免费 小红书视频下载 无水印 抖音视频下载 无水印 数字星空

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

编程知识
2024年08月28日 22:20

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
    

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

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

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

From:https://www.cnblogs.com/SkyXZ/p/18385688
本文地址: http://www.shuzixingkong.net/article/1537
0评论
提交 加载更多评论
其他文章 AI产品经理的探索:技能、机遇与未来展望
Ai时代的产品经理 随着人工智能(AI)的飞速发展,AI已经从一个前沿技术概念逐步演变为驱动各行业创新的核心力量。从智能助手到自动驾驶,从个性化推荐系统到图像识别,AI正在以不可思议的速度改变着我们的生活方式和工作模式。伴随着这一趋势,AI领域的产品经理(PM)也应运而生,他们在技术与市场之间架起桥
AI产品经理的探索:技能、机遇与未来展望
用我十多年的“奇葩”经验,给在“挂吊瓶”的博客园几点建议
初识博客园 我是08年开始接触开发的,一开始涉及的就是.net和java,记得那会好像是jar6来着,net嘛还是2.0 那时候包括现在,找资料很多时候会找到博客园来 一开始我以为博客园是很多博主成立的一个联盟,就是各自弄一个博客系统,然后公用一个域名 为啥会这么想呢? 因为我看高的博文都长得不一样
用我十多年的“奇葩”经验,给在“挂吊瓶”的博客园几点建议
计算机Power电源状态
在计算机电源管理中,S1, S2, S3, S4 代表不同的电源状态或睡眠状态。 了解这些状态,对计算机设备理解功耗及工作状态有很大帮助。最近公司开会,系统同事有讲S3状态功耗很低,我猜和电脑的睡眠、息屏有关。。。emmm,不懂就要学 以下是这些状态的详细说明: S1 状态(低电量等待状态,又称“C
计算机Power电源状态 计算机Power电源状态
入职后,我发现工作内容和自己想象中的不太一致。。
2018年6月,大三暑假进行时,实习第二天上班 昨天王工跟我说最好统一开发工具用eclipse,今早我瞄到其实也有同事用idea。 eclipse还得学习,用idea算了,随便上网找个盗版的就好咯,不纠结这么多。 公司被逮到,也是公司的问题,公司没有禁止使用idea,一定就不是我的问题。 一大早上班
入职后,我发现工作内容和自己想象中的不太一致。。 入职后,我发现工作内容和自己想象中的不太一致。。 入职后,我发现工作内容和自己想象中的不太一致。。
记录荒废了三年的四年.net开发的第三次面试,苏州斯莱克
现在就业的确崩了 这次面试的时间是8月28号。距离上一次面试已经过去了一个月了,距离开始找工作已经过去了2个月。没多少找工作经验的我也体会到了什么叫就业崩了。 看了一线码农的采访计划后,我也把苏州列为了找工作的地方之一。我成都感觉公司都翻烂了 要么工资高,15000,但要求开发测试运维一条龙,什么.
[golang]查询ssl证书剩余有效天数并邮件提醒
前言 自从云厂商的免费ssl证书改成3个月,而且证书数量还是20个之后,自己网站的ssl证书就换成了其它免费方案。但是免费方案不会提醒证书过期,所以写个工具每天定时查询证书剩余有效天数,如果证书即将过期,就发送邮件提醒。 基本实现 最基本的代码功能就是检测网站ssl证书的有效天数,可以用命令行传参的
折腾 Quickwit,Rust 编写的分布式搜索引擎 - 可观测性之日志管理
Quickwit 从底层构建,旨在 高效地索引非结构化数据,并在云存储上轻松搜索这些数据。 此外,Quickwit 开箱即支持 OpenTelemetry gRPC 和 HTTP(仅 protobuf)协议,并提供了一个 REST API,可以接收任何 JSON 格式的日志。 这让 Quickwit
折腾 Quickwit,Rust 编写的分布式搜索引擎 - 可观测性之日志管理 折腾 Quickwit,Rust 编写的分布式搜索引擎 - 可观测性之日志管理 折腾 Quickwit,Rust 编写的分布式搜索引擎 - 可观测性之日志管理
Semantic Kernel/C#:一种通用的Function Calling方法,文末附经测试可用的大模型
Funcion Calling介绍 函数调用允许您将模型如gpt-4o与外部工具和系统连接起来。这对于许多事情都很有用,比如为AI助手赋能,或者在你的应用程序与模型之间建立深度集成。 如果您了解或者使用过Semantic Kernel可能会发现除了OpenAI支持Function Calling的模
Semantic Kernel/C#:一种通用的Function Calling方法,文末附经测试可用的大模型 Semantic Kernel/C#:一种通用的Function Calling方法,文末附经测试可用的大模型 Semantic Kernel/C#:一种通用的Function Calling方法,文末附经测试可用的大模型