需求:在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调用摄像头不出图解决方法的更多相关文章

  1. Selenium(基于JAVA语言)-》在eclipse上运行web项目在Mac系统上启动时提示nodename nor servname provided解决办法

    最近使用eclipse进行自动化测试时,遇到一种情况,无法调起浏览器,且有报错,如下: org.openqa.selenium.WebDriverException: failed to lookup ...

  2. Java Web项目在Mac系统上启动时提示nodename nor servname provided的解决办法

    今天在Mac系统上启动Java Web项目的时候,提示了Java.net.UnknownHostException: yangxiaomindeMacBook-Pro.local nodename n ...

  3. 在Mac系统上配置Android真机调试环境

    在Mac系统上配置Android真机调试环境 mac上配置安卓环境还说挺方便的,真机调试也比win上要好一些.win上被各种软件强行安装了xxx助手. 在mac上就了一个干净的感觉. 下载Androi ...

  4. 在MAC系统上进行屏幕录制

    最近打算将一些软件操作过程进行屏幕录制进行视频分享,所以寻思着找一块能在MAC上使用的屏幕录制软件.google了一番,没想到MAC系统自带的QuickTime Player已经内置屏幕录像功能,而且 ...

  5. 关于如何在mac系统上安装Git并在码市上建立项目

    对Git一窍不通,为了在mac系统上安装Git,查了很多资料,走了很多弯路,一切搞定后发现其实很简单. 1.在https://brew.sh上按要求安装Homebrew. 2.在电脑终端键入brew ...

  6. 在 mac 系统上安装 python 的 MySQLdb 模块

    在 mac 系统上安装 python 的 MySQLdb 模块 特别说明:本文主要参考了Mac系统怎么安装MySQLdb(MySQL-Python) 第 1 步:下载 MySQL-python-1.2 ...

  7. Mac下新安装的MySQL无法登陆root用户解决方法

      一 设置MySQL命令行搜索路径 0.苹果->系统偏好设置->最下边点mysql 在弹出页面中 启动mysql服务 1.打开终端,输入: sudo vi ~/.bash_profile ...

  8. 64位进程调用32位dll的解决方法

    64位进程调用32位dll的解决方法   最近做在Windows XP X64,VS2005环境下做32位程序编译为64位程序的工作,遇到了一些64位编程中可能遇到的问题:如内联汇编(解决方法改为C/ ...

  9. 64位win10系统无法安装.Net framework3.5的两种解决方法

    参考网站: https://blog.csdn.net/zang141588761/article/details/52177290 在Windows10中,当我们安装某些软件的时候会提示“你的电脑上 ...

  10. IIS上发布站点后URL重写失效的解决方法

    在发布网站时URL重写有可能会失效,如果失效的话就需要您设置一下IIS:1.Windows XP系统或Windows 2003系统等使用以下方法:>打开IIS,主目录-〉配置-〉映射-〉在窗体左 ...

随机推荐

  1. 【Azure 环境】如何解决Principal 2330xxxxxxxxxxxxxxxxxxxx31efc5 does not exist in the directory xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx问题

    问题描述 在使用 Key Vault 和 Azure CLI 管理存储帐户密钥的官方文档中,其中有一步是"向 Key Vault 授予对你的存储帐户的访问权限", 其中CLI命令中 ...

  2. 【Azure 应用服务】Azure Function在执行Function的时候,如果失败了,是否可以重试呢?

    问题描述 Azure Function在执行Function的时候,如果失败了,是否可以重试呢? 问题解答 Function app默认是不开启重试的,但是可以修改 host.json 文件来定义重试 ...

  3. 图查询语言 nGQL 简明教程 vol.01 快速入门

    本文旨在让新手快速了解 nGQL,掌握方向,之后可以脚踩在地上借助文档写出任何心中的 NebulaGraph 图查询. 视频 本教程的视频版在B站这里. 准备工作 在正式开始 nGQL 实操之前,记得 ...

  4. Android 安装手机程序有问题/点击runAPP 程序安装不了手机

    可以在 gradle.properties 里添加   android.injected.testOnly=false   点击同步  就可以运行了 如下:

  5. 精贴总结 - 万字长文带你入门Istio

    原文 - 万字长文带你入门Istio 一.个人看法 背景:以docker+k8s普及,支持快速部署,通过k8s允许统一管理 解决:1)设计分布式系统,导致开发难度提高:2)统一多语言的服务治理方案 目 ...

  6. JavaScript获取href的值

    1.当href的值为正常网址时: <!DOCTYPE html> <html> <head> <title></title> <met ...

  7. C# 中使对象序列化/反序列化 Json 支持使用派生类型以及泛型的方式

    C# 中使对象序列化/反序列化 Json 支持使用派生类型以及泛型方式 废话 前言 为啥想写这个博客 最近自己写的框架有用到这个 类似工作流,支持节点编码自定义,动态运行自定义. 尽量减少动态解析这就 ...

  8. 音乐分层软件 spectralayers7 扒歌 简直就是黑科技

    音乐分层软件 spectralayers7 扒歌 简直就是黑科技

  9. 修改校准debain/manjaro的时间时钟

    一次重启后发现时间竟然从上午变成了晚上!要问,我是怎么发现在的我就是发现上午的时候我的屏幕夜灯突然出现了 使用命令 sudo rm -f /etc/localtime删除本地时间文件 sudo cp ...

  10. 玉蟾宫(悬线dp)

    求最大子矩阵一般用采用悬线法 (包好用的牢底) 悬线法: [ 以这道题为例,我们将R称为障碍格子,将F称为非障碍格子] 我们选择任意一个非障碍格子,引出三条直线:左直 右直 上直 随后从这个点出发,分 ...