AI视觉处理--OpenCV编译安装
操作系统: Windows10
编 译 器: mingw32(QT5自带)
软件版本: OpenCV3.4.1
准备工作:
下载并安装CMAKE
修改环境变量,将cmake及mingw32编译器的路径加入path(重要,否则会出错)
C:\Program Files\CMake\bin
D:\Qt\Qt5.12.9\Tools\mingw730_32\bin
创建build目录及install目录
执行cmake:
指定源码目录,指定编译目录(build)
点Configure:(如果采用VS编译器,操作相同)
选择MinGW Makefiles
选择Specify native compilers
指定C/C++编译器(QT5自带的mingw编译器),Fortran编译器不用理会:
D:/Qt/Qt5.12.9/Tools/mingw730_32/bin/gcc.exe
D:/Qt/Qt5.12.9/Tools/mingw730_32/bin/g++.exe
选择WITH_QT,并指定QT5文件相关目录(与安装版本及路径有关)
QT_QMAKE_EXECUTABLE值为:D:\Qt\Qt5.12.9\5.12.9\mingw73_32/bin/qmake.exe
Qt5Concurrent_DIR值为: D:\Qt\Qt5.12.9\5.12.9\mingw73_32/lib/cmake/Qt5Concurrent
Qt5Core_DIR值为: D:\Qt\Qt5.12.9\5.12.9\mingw73_32/lib/cmake/Qt5Core
Qt5Gui_DIR值为: D:\Qt\Qt5.12.9\5.12.9\mingw73_32/lib/cmake/Qt5Gui
Qt5Test_DIR值为: D:\Qt\Qt5.12.9\5.12.9\mingw73_32/lib/cmake/Qt5Test
Qt5Widgets_DIR值为: D:\Qt\Qt5.12.9\5.12.9\mingw73_32/lib/cmake/Qt5Widgets
Qt5OpenGL值为为: D:\Qt\Qt5.12.9\5.12.9\mingw73_32/lib/cmake/Qt5OpenGL
点Generate生成配置文件
关闭CMAKE,在build目录中shift+右键调用管理员命令: "在此处打列Powershell窗口"
执行编译命令:
mingw32-make -j 8
安装:默认安装在build目录下的install中,也可以在配置时指定
mingw32-make install
错误处理:
error: 'sprintf_instead_use_StringCbPrintfA_or_StringCchPrintfA'
修改modules\videoio\src\cap_dshow.cpp忽略安全检查
#define STRSAFE_NO_DEPRECATE
mingw32-make[2]: *** [modules\dnn\CMakeFiles\opencv_dnn.dir\build.make:1095: modules/dnn/CMakeFiles/opencv_dnn.dir/layers/layers_common.avx512_skx.cpp.obj] Error 1
运行CMAKE重新配置参数:
CPU_DISPATCH AVX2
QT5部署测试:
1.将bin目录添加至PATH变量(重要,否则不能运行)
2.新建QT5工程,将include目录及lib目录复制到工程目录
3.中修改.pro文件添加内容
INCLUDEPATH+=$$PWD\opencv\include
INCLUDEPATH+=$$PWD\opencv\include\opencv
INCLUDEPATH+=$$PWD\opencv\include\opencv2
LIBS += $$PWD\opencv\x86\mingw\lib\libopencv_*.a
示例代码:
#include "opencv.hpp"
using namespace cv;
int main(int argc, char *argv[])
{
QApplication a(argc, argv);
Mat image=imread("d:\\123.bmp");
namedWindow("显示测试");
imshow("显示测试",image);
waitKey(0);
return a.exec();
}
通过label控件显示:
// 颜色空间转换
cvtColor(img_mat, img_rgb, CV_BGR2RGB);
// 转换成QImage格式
QImage img_show = QImage((const uchar*)(img_rgb.data),
img_rgb.cols,
img_rgb.rows,
img_rgb.cols * img_rgb.channels(),
QImage::Format_RGB888);
// 显示
ui->label->setPixmap(QPixmap::fromImage(img_show));
文件下载问题: 在配置过程中可能会遇到下载一些第三方源文件的情况,可以事先下载好,修改cmake文件指定位置,在配置的时候即可自动从本地下载。
例如: 3rdparty/ippicv/ippicv.cmake
"https://raw.githubusercontent.com/opencv/opencv_3rdparty/${IPPICV_COMMIT}/ippicv/"
修改为本地路径:
"file:///home/downloads/"
VS2012编译:
Configure中选择vs2012,根据需要选择64或32bit,其他不用修改
Generate生成工程
Open Project打开工程,生成-->重新生成
右键左侧解决方案列表,选择CMakeTargets-->INSTALL-->生成
即可在install目录下生成。
Ubuntu20.04/Rasip(gcc)
安装cmake:
sudo apt-get install cmake cmake-qt-gui cmake-curses-gui
# 下载opencv源码,可以直接下载后解压
git clone https://github.com/opencv/opencv.git
mkdir -p opencv/build && cd opencv/build
# Run CMake to generate makefiles
cmake -D CMAKE_BUILD_TYPE=RELEASE \
-D CMAKE_INSTALL_PREFIX=/usr/local/ \
-D INSTALL_C_EXAMPLES=OFF \
-D WITH_TBB=ON \
-D WITH_V4L=ON \
-D WITH_QT=ON \
-D WITH_OPENGL=ON \
-D BUILD_EXAMPLES=OFF \
-D BUILD_PERF_TESTS=OFF \
-D BUILD_TESTS=OFF \
-D BUILD_DOCS=OFF \
..
# Build and install
make -j$(nproc)
make install