当前位置: 首页 > article >正文

Qt(openCV的应用)

1. OpenCV简介

OpenCV(Open Source Computer Vision Library)是一个开源的计算机视觉库,它提供了丰富的图像处理和计算机视觉功能。该库由英特尔公司发起,并在 BSD 许可证下发布,因此它是免费的,且开放源代码。

OpenCV完全由C++开发,提供C++和Python两套接口。

官方文档:

https://docs.opencv.org/4.5.2/icon-default.png?t=O83Ahttps://docs.opencv.org/4.5.2/

Qt是兼容C++的,且提供了UI界面,因此调用OpenCV进行图像处理非常合适。

2. 环境搭建

需要注意,本地提供的OpenCV版本3.4仅限于与Qt 5.4配套,其他版本需要自行配套。

1. 解压缩到D盘,目录如下图所示,一定要注意文件夹的层级,尽量完全相同!!!

2. 进入Win的“我的电脑”,鼠标右键,点击“属性”。

3. 搜索并进入“编辑系统环境变量”。

4. 在弹出的窗口中点击“环境变量”。

5. 在系统变量的Path中点击“编辑”。

6. 在弹出的窗口中点击“新建”。

7. 在光标编辑处,粘贴之前OpenCV的本地路径:

D:\opencv\opencv3.4-install\install\x86\mingw\bin

8. 逐级确定,设置完成。

9. 重新启动电脑。

10. 新建一个Qt项目验证环境搭建的有效性,新建Qt项目后,在.pro文件中添加OpenCV的路径。

INCLUDEPATH += D:/opencv/opencv3.4-install/install/include
INCLUDEPATH += D:/opencv/opencv3.4-install/install/include/opencv
INCLUDEPATH += D:/opencv/opencv3.4-install/install/include/opencv2
LIBS += D:/opencv/opencv3.4-install/install/x86/mingw/lib/libopencv_*.a

11. 在main.cpp中编写一个示例程序验证OpenCV。

main.cpp

#include "dialog.h"
#include <QApplication>
#include <QDebug>

// hpp是C++独享的头文件
#include <opencv2/opencv.hpp> // OpenCV的头文件

using namespace cv; // 使用名字空间

int main(int argc, char *argv[])
{
    // 图像在OpenCV中是三维数组(矩阵 Matrix)
    Mat src; // 数组对象
    // 读取的图像默认路径在构建目录
    src = imread("berry_island.png");
    // 如果读取不到
    if(!src.data)
    {
        qDebug() << "读取失败!";
        return -1;
    }
    // 读取成功弹窗展示图片
    namedWindow("input image",CV_WINDOW_AUTOSIZE);
    // 在窗口中展示图片
    // 参数1:一定要跟上面的窗口名称相同
    // 参数2:要展示的图片
    imshow("input image",src);
    // 阻塞保持持续显示,直到按键
    waitKey(0);

    return 0;
}

3. 人脸检测

1. 使用OpenCV获取摄像头数据。

2. 使用OpenCV自带的数据模型初始化级联分类器。

3. 中心区域图像裁切 + 灰度处理

4. 通过原始图像与级联分类器对比找到人脸区域并绘制矩形框

(我不是黑粉,我是真IKUN!)

openCV这里大家做一个简单了解即可,如果你真的对这方面很感兴趣或者想要从事图像处理方面的工作的话,可以继续更深入的学习。


http://www.kler.cn/a/382819.html

相关文章:

  • 【物联网技术】ESP8266 WIFI模块在STA模式下作为TCP服务器与多个电脑/手机网络助手(TCP客户端)通信——TCP数据透传
  • wodpress调用当前文章同分类下相同tag的10篇文章
  • LLMs之Calculate:利用大语言模型技术基于文本内容实现数字计算能力的简介、常用方法、代码实现之详细攻略
  • 第10天:Fragments(碎片)使用
  • 释放专利力量:Patently 如何利用向量搜索和 NLP 简化协作
  • C语言中的分支和循环:深入理解与应用
  • liunx系统介绍
  • 蓝禾,汤臣倍健,三七互娱,得物,顺丰,快手,途游游戏25秋招内推
  • Linux云计算 |【第五阶段】CLOUD-DAY9
  • C#中的集合类及其使用
  • Kafka 之消息并发消费
  • Linux权限解析:用户、组和权限的协同
  • 如何跑通 PHP(web)项目
  • DPDK高性能处理框架VPP
  • 力扣:225 用队列实现栈
  • 【JavaScript】V8,Nodejs 与浏览器
  • 【linux】的爱恨情仇
  • 机器学习—TensorFlow实现
  • C语言必做30道练习题
  • mysql-springboot netty-flink-kafka-spark(paimon)-minio
  • 笔记整理—linux驱动开发部分(8)framebuffer类设备
  • FlinkSql读取外部Mysql和HBase数据库的方法(scala)
  • AI笔筒操作说明及应用场景
  • Rust 图形界面开发——使用 GTK 创建跨平台 GUI
  • .NET 8 中 Entity Framework Core 的使用
  • 无人机无线电频谱侦测运行方式!