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

无锡公司网站建设服务吉林省最新今天的消息

无锡公司网站建设服务,吉林省最新今天的消息,百度竞价返点一般多少,有哪些程序网站Qt中的QLabel控件用于显示文本或图像,不提供用户交互功能。以下测试代码用于从内置摄像头获取图像并实时显示: Widgets_Test.h: class Widgets_Test : public QMainWindow {Q_OBJECTpublic:Widgets_Test(QWidget *parent nullptr);~Widgets…

      Qt中的QLabel控件用于显示文本或图像,不提供用户交互功能。以下测试代码用于从内置摄像头获取图像并实时显示:

      Widgets_Test.h:

class Widgets_Test : public QMainWindow
{Q_OBJECTpublic:Widgets_Test(QWidget *parent = nullptr);~Widgets_Test();private slots:void start_capture();void close_caputre();void update_frame(const QImage& image);private:void capture();Ui::Widgets_TestClass ui_;std::thread capture_thread_{};std::atomic<bool> is_running_{ false };
};

      Widgets_Test.cpp:

Widgets_Test::Widgets_Test(QWidget *parent): QMainWindow(parent)
{ui_.setupUi(this);connect(ui_.button_close, &QPushButton::clicked, this, &Widgets_Test::close);connect(ui_.open_camera, &QPushButton::clicked, this, &Widgets_Test::start_capture);connect(ui_.close_camera, &QPushButton::clicked, this, & Widgets_Test::close_caputre);connect(ui_.open_camera, &QPushButton::clicked, this, [this] {ui_.button_close->setEnabled(false);});connect(ui_.close_camera, &QPushButton::clicked, this, [this] {ui_.button_close->setEnabled(true);});
}Widgets_Test::~Widgets_Test()
{}void Widgets_Test::start_capture()
{is_running_.store(true);capture_thread_ = std::thread([this] {this->capture();});
}void Widgets_Test::capture()
{cv::VideoCapture cap(0);if (!cap.isOpened()) {qWarning("failed to open camera"); // QMetaObject::invokeMethod, UI操作必须在主线程中执行emit ui_.close_camera->clicked();return;}auto w1 = static_cast<int>(cap.get(cv::CAP_PROP_FRAME_WIDTH));auto h1 = static_cast<int>(cap.get(cv::CAP_PROP_FRAME_HEIGHT));auto w2 = ui_.label_show->width();auto h2 = ui_.label_show->height();qDebug() << w1 << "," << h1 << "," << w2 << "," << h2;cv::Mat frame{}, rgb{};QImage image{}, img_copy{};while (is_running_.load()) {cap >> frame;if (frame.empty())continue;cv::cvtColor(frame, rgb, cv::COLOR_BGR2RGB);cv::resize(rgb, rgb, cv::Size(w2, h2));image = QImage(rgb.data, rgb.cols, rgb.rows, rgb.step, QImage::Format_RGB888);img_copy = image.copy();QMetaObject::invokeMethod(this, "update_frame", Qt::QueuedConnection, Q_ARG(QImage, img_copy));std::this_thread::sleep_for(std::chrono::milliseconds(10));}
}void Widgets_Test::update_frame(const QImage& image)
{ui_.label_show->setPixmap(QPixmap::fromImage(image));
}void Widgets_Test::close_caputre()
{is_running_.store(false);if (capture_thread_.joinable())capture_thread_.join();
}

      说明

      1. 在子线程中获取摄像头每帧数据:

      (1).因为QLabel中接收数据的类型为QImage,这里需要将cv::Mat转换为QImage。

      (2).通过QMetaObject::invokeMethod函数调用对象上的信号或槽函数,支持跨线程调用。这里使用此函数将子线程获取到的图像数据传给主线程上的QLabel控件。使用Qt::QueuedConnection,跨线程异步调用。

      2.UI操作必须在主线程中执行

      (1).主线程中通过QLabel的setPixmap函数显示图像。

      3.点击"open camera",开始打开摄像头采集显示图像;点击"close camera",关闭摄像头。

      执行结果如下图所示:

      GitHub:https://github.com/fengbingchun/Qt_Test

http://www.dtcms.com/wzjs/544113.html

相关文章:

  • 用wordpress做的外贸网站蜘蛛网网站建设分析
  • 百变模板手机网站建设时尚网站网页设计
  • 电商建站wordpress 自定义面板
  • 网站界面设计说明个体工商户未做年报会罚款吗
  • 景宁县建设局网站网站标题关键优化
  • 个人站长做什么类型的网站升级网站服务器
  • 网站建设销售工作职责宿迁论坛
  • 退工在那个网站上做网站社区的建设
  • 网站手机端制作软件北京市市场监督管理局官网
  • 网站备案截图柳城 wordpress
  • 山西建网站做一个公司官网
  • 濮阳建站建设西宁市城东区住房和建设局网站
  • 51这个网站还有吗国外产品设计网站
  • 海外公司网站 国内做备案代做网页
  • 青岛城阳做网站上海seo推广价格
  • 企业网站代维护泉州百度开户
  • 网站建设什么科目浅谈海尔的电子商务网站建设
  • 新版网站上线响水县住房建设局网站
  • 网站介绍视频怎么做的重庆网站建设公司多少钱
  • win7 搭建iss网站wordpress wp_footer()
  • 企业网站 用个人备案如何做网上水果网站系统
  • 响应式网站建站价格网上做任务网站有哪些内容
  • 杭州网站建设网页设计师的工作
  • 门户子网站建设申请模拟ip访问网站
  • 免费的logo网站qq是哪家公司的产品
  • 中国铁路监理建设协会网站网页搜索排名分析
  • 神魔网站建设wordpress浏览统计
  • 某俄文网站网络搭建drc
  • html5网站开发开题报告基于superslide2的wordpress幻灯片
  • 网站可以给pdf做笔记广东网站备案 时间