本文主要针对开发人脸识别demo时图像较为卡顿做出探索,利用GPU实现图像信息的处理!
环境配置
在进行图像处理或者人脸识别是需要给电脑安装opencv环境,可参考其他文章进行配置;
代码示例
.pro文件
QT += core gui opengl
# 必须添加opengl模块
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
#若将D:/opencv/install/install/include添加到环境变量,下面INCLUDEPATH这三行可以不写
INCLUDEPATH += F:/Opencv/build/install/include/opencv \
F:/Opencv/build/install/include/opencv2 \
F:/Opencv/build/install/include
LIBS += -L F:/Opencv/build/install/x64/mingw/lib/libopencv_*.a
INCLUDEPATH+=../cqtopencvviewergl
SOURCES += \
cqtopencvviewergl/cqtopencvviewergl.cpp \
main.cpp \
mainwindow.cpp
HEADERS += \
cqtopencvviewergl/cqtopencvviewergl.h \
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
cqtopencvviewergl.h
#ifndef CQTOPENCVVIEWERGL_H
#define CQTOPENCVVIEWERGL_H
#include <QOpenGLWidget>
#include <QOpenGLFunctions_2_0>
#include <opencv2/opencv.hpp>
#include <opencv2/core/core.hpp>
#include <mutex>
class CQtOpenCVViewerGl : public QOpenGLWidget, protected QOpenGLFunctions_2_0
{
Q_OBJECT
public:
explicit CQtOpenCVViewerGl(QWidget *parent = 0);
signals:
void imageSizeChanged( int outW, int outH ); /// Used to resize the image outside the widget
public slots