【Qt 学习之路】Qt调用opencv读摄像头图像

24 篇文章 1 订阅
11 篇文章 0 订阅

目录

1、简述

2、开发环境

3、库的选择

4、示例

5、效果


1、简述

OpenCV也和Qt一样,有很多版本。有各种平台版本,Android、ios、Windows、Linux等。同样在Windows上,也分vc10、vc11、vc12版。

用Qt调用opencv摄像头接口显示当前摄像头画面并拍照。


2、开发环境

操作系统版本:Windows7sp1 64位
Qt版本:5.3.2 msvc2010 32bit
opencv版本:2.4.11版本

3、库的选择

这里用动态库,因为静态库不仅会引发空间浪费问题,还在对程序的更新、部署和发布也会带来麻烦。动态库包括3个文件:.h、.dll、.lib。

.h头文件是编译时必须的,lib是链接时需要的,dll是运行时需要的

4、示例


1、先看一下我的demo,这里的include和lib是从opencv拷贝出来的

2、拷贝的opencv库的build文件夹下的include文件夹到我们工程下

3、在我们的工程中新建lib文件夹,并将下述4个文件拷贝到lib下。(注意,这里的文件路径)

4、外部文件弄好了,开始配置我们的pro文件

5、配置好pro,可以写代码了:

源文件:

ui文件:

6、最后一步,把dll文件拷贝到运行目录,根据开发debug版还是Release版:
debug版:

Release版:

5、效果

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
根据提供的引用内容,我们可以了解到车牌识别系统需要实现图像处理技术检测、定位、识别车牌上的字符,而且还需要设计文件选择功能以及系统的UI界面。因此,我们可以通过Qt调用摄像头实现车牌识别系统的功能。 以下是实现车牌识别qt调用摄像头的步骤: 1.安装OpenCV库和Qt开发环境。 2.在Qt中创建一个新的项目,选择Qt Widgets Application。 3.在Qt Designer中设计车牌识别系统的UI界面,包括文件选择功能和摄像头调用功能。 4.在Qt Creator中打开UI文件,将UI文件转换为C++代码。 5.在Qt Creator中添加OpenCV库文件,包括头文件和库文件。 6.编写车牌识别的代码,包括图像处理技术检测、定位、识别车牌上的字符等功能。 7.将车牌识别的代码与UI界面的代码进行连接,实现文件选择功能和摄像头调用功能。 8.编译并运行程序,测试车牌识别系统的功能。 以下是一个简单的车牌识别qt调用摄像头的代码示例: ```cpp #include <opencv2/opencv.hpp> #include <QMainWindow> #include <QFileDialog> #include <QMessageBox> #include <QTimer> using namespace cv; namespace Ui { class MainWindow; } class MainWindow : public QMainWindow { Q_OBJECT public: explicit MainWindow(QWidget *parent = 0); ~MainWindow(); private slots: void on_openFileButton_clicked(); void on_startButton_clicked(); void on_stopButton_clicked(); void updateFrame(); private: Ui::MainWindow *ui; VideoCapture cap; QTimer *timer; }; MainWindow::MainWindow(QWidget *parent) : QMainWindow(parent), ui(new Ui::MainWindow) { ui->setupUi(this); timer = new QTimer(this); connect(timer, SIGNAL(timeout()), this, SLOT(updateFrame())); } MainWindow::~MainWindow() { delete ui; } void MainWindow::on_openFileButton_clicked() { QString fileName = QFileDialog::getOpenFileName(this, tr("Open File"), "", tr("Video Files (*.avi *.mp4)")); if (fileName != "") { cap.open(fileName.toStdString()); if (!cap.isOpened()) { QMessageBox::warning(this, tr("Error"), tr("Failed to open video file!")); return; } ui->startButton->setEnabled(true); } } void MainWindow::on_startButton_clicked() { if (cap.isOpened()) { ui->startButton->setEnabled(false); ui->stopButton->setEnabled(true); timer->start(33); } } void MainWindow::on_stopButton_clicked() { ui->startButton->setEnabled(true); ui->stopButton->setEnabled(false); timer->stop(); } void MainWindow::updateFrame() { Mat frame; cap >> frame; if (!frame.empty()) { // 车牌识别的代码 // ... // 显示图像 cv::cvtColor(frame, frame, CV_BGR2RGB); QImage image((const uchar*)frame.data, frame.cols, frame.rows, QImage::Format_RGB888); ui->videoLabel->setPixmap(QPixmap::fromImage(image)); } } int main(int argc, char *argv[]) { QApplication a(argc, argv); MainWindow w; w.show(); return a.exec(); } ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

沙振宇

你的鼓励将是我创作的最大动力~

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值