Mac OS中搭建Qt+OpenCV环境

由于已经在Xcode中配置好OpenCV,想起来正好还可以试下直接用Qt来编写OpenCV程序,这样UI的问题到后面就好处理了。

软件环境

操作系统版本:macOS Mojave Version 10.14.6
Qt Creator版本:5.13.0
OpenCV版本:4.1.1

配置步骤
  1. 参考在macOS上编译使用OpenCV4,先编译出OpenCV的库;
  2. 新建一个Qt Widgets Application的项目;
  3. 在项目界面,选择Projects,再选中Run,进入Run Settings界面,将Add build library search path to DYLD_LIBRARY_PATH and DYLD_FRAMEWORK_PATH取消勾选;
    在这里插入图片描述
  4. 修改pro文件,参考如下:
QT       += core gui

greaterThan(QT_MAJOR_VERSION, 4): QT += widgets

CONFIG += c++11

# The following define makes your compiler emit warnings if you use
# any Qt feature that has been marked deprecated (the exact warnings
# depend on your compiler). Please consult the documentation of the
# deprecated API in order to know how to port your code away from it.
DEFINES += QT_DEPRECATED_WARNINGS

# You can also make your code fail to compile if it uses deprecated APIs.
# In order to do so, uncomment the following line.
# You can also select to disable deprecated APIs only up to a certain version of Qt.
#DEFINES += QT_DISABLE_DEPRECATED_BEFORE=0x060000    # disables all the APIs deprecated before Qt 6.0.0

INCLUDEPATH += /usr/local/include/opencv4

LIBS += -L/usr/local/lib \
 -lopencv_core \
 -lopencv_highgui \
 -lopencv_imgproc \
  -lopencv_imgcodecs

SOURCES += \
    main.cpp \
    mainwindow.cpp

HEADERS += \
    mainwindow.h

FORMS += \
    mainwindow.ui

# Default rules for deployment.
qnx: target.path = /tmp/$${TARGET}/bin
else: unix:!android: target.path = /opt/$${TARGET}/bin
!isEmpty(target.path): INSTALLS += target

主要增加的部分为:

INCLUDEPATH += /usr/local/include/opencv4

LIBS += -L/usr/local/lib \
 -lopencv_core \
 -lopencv_highgui \
 -lopencv_imgproc \
  -lopencv_imgcodecs
  1. 修改```main.cpp``,进行测试,代码如下:
#include "mainwindow.h"
#include <opencv2/opencv.hpp>
#include <opencv2/imgproc/imgproc.hpp>
#include <opencv2/core/core.hpp>
#include <opencv2/highgui/highgui.hpp>

#include <QApplication>
using namespace cv;
void Demo_draw()
{
    Mat img = Mat::zeros(Size(500,500), CV_8UC3);
    const int size = 5;
    Point points[1][size];
    line(img, Point(3, 4), Point(100, 220), Scalar(0, 255, 0), 2, LINE_8);
    imshow("draw test", img);
}

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    MainWindow w;
    Demo_draw();
    return a.exec();
}

测试运行

运行效果如下:
在这里插入图片描述

备注说明

如果不执行步骤中的第3步,则在编译运行时会出现类似如下的错误信息:

16:00:15: Starting /Users/zzz/Documents/GitHub/build-Q-Desktop_Qt_5_13_0_clang_64bit-Release/Q.app/Contents/MacOS/Q ...
dyld: Symbol not found: __cg_jpeg_resync_to_restart
  Referenced from: /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
  Expected in: /usr/local/lib/libJPEG.dylib
 in /System/Library/Frameworks/ImageIO.framework/Versions/A/ImageIO
16:00:15: The program has unexpectedly finished.
16:00:15: The process was ended forcefully.
16:00:15: /Users/zzz/Documents/GitHub/build-Q-Desktop_Qt_5_13_0_clang_64bit-Release/Q.app/Contents/MacOS/Q crashed.

网络上的其他方法,如方法一方法二 ,在遇到上述问题是采用了重新链接的方式,都相对麻烦,都不如这个在Qt Creator中的操作简单直接。

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值