01 您所在的位置:网站首页 windows10轻松使用设置当前已关闭你的背景 01

01

2023-06-07 15:23| 来源: 网络整理| 查看: 265

目录

一、环境:

【1】下载并安装OpenCV,配置OpenCV环境变量

​编辑

​编辑

​【2】在.pro工程文件中加入OpenCV库路径和库文件名

【3】添加头文件和命名空间

【4】构建运行代码,检验是否配置成功。

二、OpenCV使用

【1】设置ui界面

【2】完整代码

【3】运行效果 

一、环境:

操作系统:Windows10

开发软件:Qt Creator 4.10.1

编译器:MSVC 2017, 64 bit

OPenCV版本:OPenCV4.5.5

【1】下载并安装OpenCV,配置OpenCV环境变量

下载安装

链接: https://pan.baidu.com/s/113pVacKduRWQq4BcZAMsow 提取码: crfv 

配置环境变量

【2】在.pro工程文件中加入OpenCV库路径和库文件名

 可以利用添加外部库达以下效果,路径为本机存储路径

INCLUDEPATH += $$PWD/../../../user/apps/software/OpenCV4.5/opencv/build/include win32:CONFIG(release, debug|release): LIBS += -L$$PWD/../../../user/apps/software/OpenCV4.5/opencv/build/x64/vc14/lib/ -lopencv_world455 else:win32:CONFIG(debug, debug|release): LIBS += -L$$PWD/../../../user/apps/software/OpenCV4.5/opencv/build/x64/vc14/lib/ -lopencv_world455d 【3】添加头文件和命名空间

添加头文件,可以只添加第一个

命名空间

添加头文件,可以只添加第一个 #include #include #include #include 命名空间 using namespace cv; 【4】构建运行代码,检验是否配置成功。

需要在ui界面设置一个oldLabel控件(QLabel) 没有报错,就证明环境配置好了

Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); Mat srcImage_ ; // 读取图像 存储为cv::Mat类型对象 “QString *”转换为“const cv::String &” srcImage_ = imread("D:/img/photograph.jpg"); // 将BGR颜色空间就转换为RGB空间 cvtColor(srcImage_, srcImage_, COLOR_BGR2RGB); // 数据源为data指针,图像的宽度、高度、字节数、像素格式 QImage disImage = QImage(srcImage_.data, srcImage_.cols, srcImage_.rows, srcImage_.cols * srcImage_.channels(), QImage::Format_RGB888); // 对QImage对象进行缩放(设置 缩放后大小 old_label->setPixmap(QPixmap::fromImage(disImage)); } 二、OpenCV使用 【1】设置ui界面

【2】完整代码

代码详情可参考此篇https://blog.csdn.net/qq_52218412/article/details/130751428

Windows10+OpenCV4.5.5打开本地图片进行图片处理 实时摄影并抓拍图片存入本机

widget.h #ifndef WIDGET_H #define WIDGET_H #include #include #include #include #include #include #include #include using namespace cv; QT_BEGIN_NAMESPACE namespace Ui { class Widget; } QT_END_NAMESPACE class Widget : public QWidget { Q_OBJECT public: explicit Widget(QWidget *parent = 0); ~Widget(); private: // 将图片格式转化并放入控件 void setChangedImage(Mat image); void setOriginalImage(Mat image); private slots: void getFrame(QPrivateSignal); void on_btn_snowflake_clicked(); // 雪花屏 void on_btn_gaussian_clicked(); // 高斯模糊 void on_btn_median_filtering_clicked(); // 中值滤波 void on_btn_grayscale_clicked(); // 灰度化 void on_btn_xy_vague_clicked(); // xy方向模糊 void on_btn_bilateral_vague_clicked(); // 双边模糊 void on_btn_corrosion_clicked(); // 腐蚀 // 打开保存图片 void on_btn_open_clicked(); void on_btn_save_clicked(); // 打开关闭摄像头,拍照 void on_btn_open_camera_clicked(); void on_btn_close_camera_clicked(); void on_btn_photograph_clicked(); private: Ui::Widget *ui; // 原图 Mat srcImage_; // 修改后的图 Mat changedImage_; // 图片路径 QString imagePath_; QTimer *timer; VideoCapture captrue_; }; #endif // WIDGET_H widget.cpp #include "widget.h" #include "ui_widget.h" #include Widget::Widget(QWidget *parent) : QWidget(parent) , ui(new Ui::Widget) { ui->setupUi(this); setWindowTitle("opencv"); // 不能关闭摄像头 不可拍照 ui->btn_photograph->setEnabled(false); ui->btn_close_camera->setEnabled(false); //超时就读取当前摄像头信息 timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(getFrame())); } Widget::~Widget() { delete ui; } void Widget::setChangedImage(Mat image) { changedImage_ = image; //Mat转QImage 像素 newlabel放置图像处理后图片 // 数据源为data指针,图像的宽度、高度、字节数、像素格式 QImage disimage2 = QImage(changedImage_.data, changedImage_.cols, changedImage_.rows, changedImage_.cols*changedImage_.channels(), QImage::Format_RGB888); disimage2 = disimage2.scaled(ui->new_label->width(), ui->new_label->height()); ui->new_label->setPixmap(QPixmap::fromImage(disimage2)); } void Widget::setOriginalImage(Mat image) { srcImage_ = image; // 将BGR颜色空间就转换为RGB空间 cvtColor(srcImage_, srcImage_, COLOR_BGR2RGB); // 数据源为data指针,图像的宽度、高度、字节数、像素格式 QImage disImage = QImage(srcImage_.data, srcImage_.cols, srcImage_.rows, srcImage_.cols * srcImage_.channels(), QImage::Format_RGB888); // 对QImage对象进行缩放 disImage = disImage.scaled(ui->old_label->width(), ui->old_label->height()); // 在指定控件中放置图像 ui->old_label->setPixmap(QPixmap::fromImage(disImage)); ui->new_label->setPixmap(QPixmap::fromImage(disImage)); } // 从摄像头中抓取并返回每一帧 void Widget::getFrame(QPrivateSignal) { // 视频帧保存到Mat,通过定时器刷新显示 Mat frameImage; captrue_ >>frameImage; //Mat转QImage 像素 oldlabel和newlabel放置图片 setOriginalImage(frameImage); } // 雪花屏 void Widget::on_btn_snowflake_clicked() { Mat srcImage = srcImage_; //像素二维矩阵函数 int rows = srcImage.rows; //像素二维矩阵列数 int cols = srcImage.cols * srcImage.channels(); for(int i=0;ibtn_open_camera->setEnabled(false); ui->btn_close_camera->setEnabled(true); ui->btn_photograph->setEnabled(true); } // 关闭摄像头 void Widget::on_btn_close_camera_clicked() { // 关闭摄像头 停止取帧 captrue_.release(); timer->stop(); // 可打开摄像 不可关闭摄像 不可拍照 ui->btn_open_camera->setEnabled(true); ui->btn_close_camera->setEnabled(false); ui->btn_photograph->setEnabled(false); } // 拍照 void Widget::on_btn_photograph_clicked() { // 视频帧保存到Mat,通过定时器刷新显示 Mat frameImage; captrue_ >> frameImage; //Mat转QImage 像素 oldlabel和newlabel放置图片 setOriginalImage(frameImage); // 将捕获的图片存储到本机指定位置 QString saveImagePath = "../../../user/picture/photograph/"; if(saveImagePath.isEmpty()) { return; } // 以当前时间给图片命名, 如"20230518_095329.png" QDateTime dateTime; dateTime = QDateTime::currentDateTime(); QString name = dateTime.toString("yyyyMMdd_hhmmss"); // 保存修改后的图片到指定位置 imwrite(QString("%1%2.png").arg(saveImagePath).arg(name).toStdString(), frameImage); qDebug()


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有