在Mac系统上使用Qt调用摄像头不出图解决方法
需求:在Mac系统上,调用摄像头,实现旋转、缩放、处理视频帧等功能
问题:使用获取视频帧的方法,在Mac上调不起来摄像头
解决方法:
将视频窗口(QVideoWidget)和视频帧(QVideoFrame)两种方法都用上
QVideoWidget的作用是,让Qt可以启动摄像头
QVideoFrame的作用是,让Qt可以处理视频帧
主要的图像显示与操作还是用的QVideoFrame
auto cameras = QCameraInfo::availableCameras();
QCamera *dev = new QCamera(cameras.at(1));
QVideoProbe *video = new QVideoProbe;
if (video != nullptr)
{
video->setSource(dev);
connect(video, SIGNAL(videoFrameProbed(QVideoFrame)), this, SLOT(slotOnProbeFrame(QVideoFrame)), Qt::QueuedConnection);
} // 使用QVideoWidget启动摄像头,但是图像现实还是使用QVideoFrame来实现
QVideoWidget *view = new QVideoWidget;
dev->setViewfinder(view);
dev->setCaptureMode(QCamera::CaptureViewfinder); // 设置捕捉模式为视频,CaptureViewfinder,CaptureVideo,CaptureStillImage
dev->load(); QCameraViewfinderSettings set = dev->viewfinderSettings();
set.setResolution(QSize(640,480));
set.setMinimumFrameRate(15);
set.setPixelFormat(QVideoFrame::Format_Jpeg);
dev->setViewfinderSettings(set);
dev->start(); /* 旧版本代码,太复杂,麻烦了
auto cameras = QCameraInfo::availableCameras();
QCamera *dev = new QCamera(cameras.at(1));
QVideoProbe *video = new QVideoProbe;
if (video != nullptr)
{
video->setSource(dev);
connect(video,SIGNAL(videoFrameProbed(QVideoFrame)), this, SLOT(slotOnProbedFrame(QVideoFrame)));
//connect(video, &QVideoProbe::videoFrameProbed, this, &MainWindow::slotOnProbedFrame);
}
QVideoWidget *view = new QVideoWidget(ui->widget);
view->setFixedSize(ui->widget->width(),ui->widget->height());
dev->setViewfinder(view);
dev->setCaptureMode(QCamera::CaptureViewfinder);
dev->load(); QCameraViewfinderSettings set;
set.setResolution(QSize(640,480));
set.setMinimumFrameRate(15);
set.setPixelFormat(QVideoFrame::Format_Jpeg);
dev->setViewfinderSettings(set);
dev->start();
ui->widget->setUpdatesEnabled(false);
*/
在Mac系统上使用Qt调用摄像头不出图解决方法的更多相关文章
- Selenium(基于JAVA语言)-》在eclipse上运行web项目在Mac系统上启动时提示nodename nor servname provided解决办法
最近使用eclipse进行自动化测试时,遇到一种情况,无法调起浏览器,且有报错,如下: org.openqa.selenium.WebDriverException: failed to lookup ...
- Java Web项目在Mac系统上启动时提示nodename nor servname provided的解决办法
今天在Mac系统上启动Java Web项目的时候,提示了Java.net.UnknownHostException: yangxiaomindeMacBook-Pro.local nodename n ...
- 在Mac系统上配置Android真机调试环境
在Mac系统上配置Android真机调试环境 mac上配置安卓环境还说挺方便的,真机调试也比win上要好一些.win上被各种软件强行安装了xxx助手. 在mac上就了一个干净的感觉. 下载Androi ...
- 在MAC系统上进行屏幕录制
最近打算将一些软件操作过程进行屏幕录制进行视频分享,所以寻思着找一块能在MAC上使用的屏幕录制软件.google了一番,没想到MAC系统自带的QuickTime Player已经内置屏幕录像功能,而且 ...
- 关于如何在mac系统上安装Git并在码市上建立项目
对Git一窍不通,为了在mac系统上安装Git,查了很多资料,走了很多弯路,一切搞定后发现其实很简单. 1.在https://brew.sh上按要求安装Homebrew. 2.在电脑终端键入brew ...
- 在 mac 系统上安装 python 的 MySQLdb 模块
在 mac 系统上安装 python 的 MySQLdb 模块 特别说明:本文主要参考了Mac系统怎么安装MySQLdb(MySQL-Python) 第 1 步:下载 MySQL-python-1.2 ...
- Mac下新安装的MySQL无法登陆root用户解决方法
一 设置MySQL命令行搜索路径 0.苹果->系统偏好设置->最下边点mysql 在弹出页面中 启动mysql服务 1.打开终端,输入: sudo vi ~/.bash_profile ...
- 64位进程调用32位dll的解决方法
64位进程调用32位dll的解决方法 最近做在Windows XP X64,VS2005环境下做32位程序编译为64位程序的工作,遇到了一些64位编程中可能遇到的问题:如内联汇编(解决方法改为C/ ...
- 64位win10系统无法安装.Net framework3.5的两种解决方法
参考网站: https://blog.csdn.net/zang141588761/article/details/52177290 在Windows10中,当我们安装某些软件的时候会提示“你的电脑上 ...
- IIS上发布站点后URL重写失效的解决方法
在发布网站时URL重写有可能会失效,如果失效的话就需要您设置一下IIS:1.Windows XP系统或Windows 2003系统等使用以下方法:>打开IIS,主目录-〉配置-〉映射-〉在窗体左 ...
随机推荐
- Windows开发环境如何启用Directory.Build.props版本号集中管理
每个产品一个根目录 Directory.Build.props的工作模式和NuGet.Config不同,Directory.Build.props不能继承.当dotnet restore工作的时候,会 ...
- Java纯手打web服务器(二)
概要:这里对上一篇中的访问资源进行改进,将访问servlet和静态资源进行区分. 主要不同的地方是加入了两种分析器 servlet分析器 if (request.getUri().startsWith ...
- webpack图片压缩
减少代码体积 | 尚硅谷 Web 前端之 Webpack5 教程 (yk2012.github.io) npm install image-mininizer webpack plugin image ...
- 【Azure 应用服务】调用Azure REST API来获取 App Service的访问限制信息(Access Restrictions)以及修改
问题描述 昨天的博文中(https://www.cnblogs.com/lulight/p/17099179.html)介绍了使用Python SDK 来获取App Service的访问限制信息,那么 ...
- java GUI 快速入门
java 中编写 GUI 有两中工具包,分别为 AWT.Swing. Swing 是 AWT 的拓展,Swing 具有比 AWT 丰富的组件和方法. AWT 和 Swing 都能跨平台使用:AWT 会 ...
- STL-unordered_hashtable模拟实现
#pragma once #include<vector> #include<string> #include<iostream> using std::cout; ...
- JS5-PC端网页特效
常见offset系列属性作用 常见client系列属性作用 常见scroll系列属性作用 封装简单动画函数 写出网页轮播图案例 offset 偏移量,使用offset相关属性可以动态的得到该元素的位置 ...
- Spring事务(五)-事务隔离级别
Spring @Transactional注解isolation属性 @Transactional注解通过isolation属性设置事务隔离级别.如下: @Transactional(isolatio ...
- t w 不连读,只不过离得很近 twins twelve 单词发音
t w 不连读,只不过离得很近 twins twelve
- 基于英特尔® Gaudi® 2 AI 加速器的文本生成流水线
随着生成式人工智能 (Generative AI,GenAI) 革命的全面推进,使用 Llama 2 等开源 transformer 模型生成文本已成为新风尚.人工智能爱好者及开发人员正在寻求利用此类 ...