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这一栏中选择适合自己的版本进行下载
注意事项:
· Clion和OpenCV建议下载最新的版本
· 如果OpenCV需要使用前版本的话需要额外重新下载MinGW
· 所有安装路径不要出现中文!一定不要有中文!!!
二、安装过程
!!!再次检查自己电脑中是否已经下载好了Clion、OpenCV、Cmake的安装包。!!!
(一)Clion的安装
Clion 是 Jetson 推出的一个C和C++集成开发环境,其可以支持嵌入式开发,虽然这个软件是收费的但如果你是学生或者教育工作者的话均可以申请免费使用但是速度通过速度较慢大致需要1Days的样子,还有一种方式在此不做过多的赘叙(为何你不看看万能的Tao宝呢???)同时由于Clion自带MinGW,所以其实配置C语言环境的过程中不需要像其他网上的教程所说重新下载一遍MinGW!!!
Clion的安装较为简单,在此就不详细展开唯一要注意的便是在安装的界面中记得勾选"添加Bin文件到PATH"免得后期自己添加过于麻烦,只不过安装完成之后需要重启一下更新系统环境变量
(二)下载编译OpenCV
接下来打开我们从Github下载的OpenCV"opencv-4.10.0-windows.exe"安装包,双击运行之后会让读者选择一个目录解压生成一个OpenCV的文件包,里面有两个文件夹一个"build"是官方已经预编译好可以直接使用的C++功能包,还有一个"sources"是对应的源码。具体如下图:
虽然我们可以直接使用官方编译好的文件进行开发,但是我们自己电脑Clion的MinGW和其他环境与已经编译好的不匹配容易出现一些比较奇怪的问题,因此建议大家重新进行编译,这时就需要用到我们的Cmake了,我们打开我们最开始下载的Cmake安装包,在Bin文件中可以找到"cmake_gui.exe"这个软件双击打开。
打开Cmake后接着我们把Clion自带的MinGW添加到系统环境变量用以编译,首先打开系统设置,在搜索框搜索"环境"选择编辑系统环境变量,在弹出的窗口选择"环境变量"一项
接着在下方"系统变量"窗格双击"Path"即可进入系统环境变量的编辑窗口
接着在弹出的窗口点击浏览后找到Clion的安装路径选择"bin"->"mingw"->"bin"即可
添加MinGw到环境变量后我们便可以开始编译了,我们打开Cmake,在第一栏路径中选择我们一开始解压生成的OpenCV的源码文件夹"sources",接着在第三栏中添加一个编译文件的存放地址,这个地址可以自主选择建议在opencv源码的统计目录下创建一个新的易于分辨的文件夹存放,接着便可以点击左下角的Configure进行配置了(第一次点击会弹出编译选项,在下拉框中选择MinGW MakeFiles后点击Finish即可开始配置)
在这个过程中可能会出现编译失败,这时我们不要着急,一般会出现的报错只有两种第一种是一开始会提示找不到MinGW这种一般是环境变量添加失败导致的,如果检查之后发现环境变量没有问题的话可以重启一下电脑更新配置,然后如果是在配置过程中报错或者是失败一般是源码中的ffmpeg文件夹缺少文件编译器自动下载失败(没XXXX的话会很慢甚至失败,建议从log中复制地址到浏览器自行下载后添加进opencv源码中的ffmpeg文件夹),每次重新开始配置的话记得删掉编译的文件夹!!!(删掉存放目录就好)避免之前的报错对本次产生影响。
如果log窗口显示(Configure Done)即配置成功。
接下来我们便可以点击"Generate"来生成MakeFiles,出现"Generate Done!"即生成成功
这时我们便可以打开我们创建的编译目录(我的叫mingw_build),接着在当前的文件夹打开CMD后(在文件夹上方路径窗格输入CMD即可在当前文件夹路径打开CMD)在出现的CMD窗口中输入"mingw32-make -j4"即可开始编译(-j4为使用4线程进行编译的意思,如果电脑配置较高可以适当改大编译的线程数来加速编译)
如图便开始了编译
中间没有出现红色的报错即编译完成,如果中间有报错有可能是因为MinGw与OpenCV版本不兼容,最新的OpenCV与最新的CLion中自带的MinGW是可以完美适配的如果编译出现问题可以查看版本来适当升高或者降低MinGW/OpenCV的版本
编译没有出错后我们便可以再次输入"mingw32-make install"来生成我们编译好的环境安装包
这个过程一般不会报错
如下图即为安装完成,接着我们把编译生成的环境安装包的bin文件夹("opencv"->"mingw_build"->"install"->"x64"->"mingw"->"bin")添加到环境变量即可
至此!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;
}
无报错且正常显示了图片即代表安装成功!!!
可能出现的报错
-
运行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
大家在配置的过程中遇到了什么问题欢迎来找我解决或者找我完善补充本教程!
大家在配置的过程中遇到了什么问题欢迎来找我解决或者找我完善补充本教程!
大家在配置的过程中遇到了什么问题欢迎来找我解决或者找完我完善补充本教程!