opencv imshow with waitKey 在 Mac OS X 10.10.2 上太慢(使用 c++)

2024-03-10

我在 Mac OS X 10.10.2 上使用 opencv c++ 来处理视频帧并显示它们。使用 waitKey 来显示视频的 imshow 的性能极其缓慢。

我有以下代码,它可以正确显示高清 (1920x1080) 灰度帧,只是它的运行速度慢了大约 10 倍(即每秒 2 到 3 帧,而不是每秒 30 帧)。

          cv::Mat framebuf[TEST_COUNT];

    //--- Code here to allocate and fill the frame buffer with about 4 seconds of video. This part works correctly.

        //--- This loop runs too slow by factor of approximately 10x
    for (int f = 0; f < TEST_COUNT; f++)
    {
        cv::imshow(windowName, framebuf[f]);
        cv::waitKey(33);
    }

谁能建议如何从 opencv imshow() 获得实时或接近实时的性能?我看到很多帖子都说他们正在实时显示视频甚至比实时更快,所以我不确定我做错了什么。任何帮助将不胜感激。


我可能是错的,但对我来说,问题不在于你的代码,而在于你的操作系统/配置。我写了一个小测试:

import cv2
import numpy as np
from random import randrange
img = np.zeros((1920, 1080), dtype = np.uint8)
counter = 0
while counter < 1000:
    cv2.line(img, (randrange(0, 1920), randrange(0, 1080)), (randrange(0, 1920), randrange(0, 1080)), (randrange(0, 255)))
    cv2.imshow('test', img)
    temp = cv2.waitKey(1)
    counter += 1
    print counter

在我的机器(Core 2 duo 2.6Ghz x64、8GB RAM、SSD)上,此测试大约需要 30 秒才能完成。运行它,如果你得到的时间明显多于你的笔记本电脑/opencv配置等肯定有问题。我在 Mac OS X 上使用过 OpenCV 2.4.x(我认为是 10.9)并且运行良好。重新安装 OpenCV 是我想到的最明显的解决方案。当你删除OpenCV后,使用brew重新安装它 -brew install opencv --with-tbb --with-python --with-ffpmeg(或类似的东西 - 检查使用brew options opencv) 应该没事。第一个选项告诉brew使用tbb(线程构建块 - 多线程库,有时可以显着提高速度)构建opencv,第二个选项安装python包装器,最后一个选项安装ffmpeg(处理编解码器等)。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

opencv imshow with waitKey 在 Mac OS X 10.10.2 上太慢(使用 c++) 的相关文章

  • 格式说明符%02x

    我有一个简单的程序 include
  • 使用python从gst管道抓取帧到opencv

    我在用着OpenCV http opencv org 和GStreamer0 10 我使用此管道通过自定义套接字通过 UDP 接收 MPEG ts 数据包sockfd由 python 提供并显示它xvimagesink 而且效果很好 以下命
  • 捕获 .aspx 和 .ascx 页面中的异常

    问题说明了一切 请看以下示例代码 ul li li ul
  • 关于逻辑/算法的想法以及如何防止线程写入 Sql Server 中的竞争

    我有以下逻辑 public void InQueueTable DataTable Table int incomingRows Table Rows Count if incomingRows gt RowsThreshold async
  • EntityHydrate 任务失败

    我最近安装了 Visual Studio 11 Beta 和 Visual Studio 2010 之后 我无法在 Visual Studio 2010 中构建依赖于 PostSharp 的项目 因此我卸载了 Visual Studio 1
  • 为什么 C 程序使用 Scanf 给出奇怪的输出?

    我目前正在学习 C 编程 并且遇到了这个奇怪的输出 Program will try functionalities of the scanf function include
  • Boost ASIO 串行写入十六进制值

    我正在使用 ubuntu 通过串行端口与设备进行通信 所有消息都必须是十六进制值 我已经在 Windows 环境中使用白蚁测试了通信设置 并得到了我期望的响应 但在使用 Boost asio 时我无法得到任何响应 以下是我设置串口的方法 b
  • 如何在 C# 中将 Json 转换为对象

    我想将 Json 转换为 C 中的对象 这里的 Json 是 值 e920ce0f e3f5 4c6f 8e3d d2fbc51990e4 如何使用 Object 问题看似愚蠢 但其实并不那么愚蠢 我没有简单的 Json 我有 IEnume
  • Selenium - C# - Webdriver - 无法找到元素

    在 C 中使用 selenium 我试图打开浏览器 导航到 Google 并找到文本搜索字段 我尝试下面的 IWebDriver driver new InternetExplorerDriver C driver Navigate GoT
  • 防止控制台应用程序中的内存工作集最小化?

    我想防止控制台应用程序中的内存工作集最小化 在Windows应用程序中 我可以这样做覆盖 SC MINIMIZE 消息 http support microsoft com kb 293215 en us fr 1 但是 如何在控制台应用程
  • Linux 上的 RTLD_LOCAL 和dynamic_cast

    我们有一个由应用程序中的一些共享库构成的插件 我们需要在应用程序运行时更新它 出于性能原因 我们在卸载旧插件之前加载并开始使用新插件 并且只有当所有线程都使用旧插件完成后 我们才卸载它 由于新插件和旧插件的库具有相同的符号 我们dlopen
  • LinkLabel 无下划线 - Compact Framework

    我正在使用 Microsoft Compact Framework 开发 Windows CE 应用程序 我必须使用 LinkLabel 它必须是白色且没有下划线 因此 在设计器中 我将字体颜色修改为白色 并在字体对话框中取消选中 下划线
  • C# 获取数据表中所有重复行的计数

    我通过运行存储过程来填充数据集 并且从数据集中填充数据表 DataSet RawDataSet DataAccessHelper RunProcedure storedprocedureName this will just return
  • 在 azure blob 存储中就地创建 zip 文件

    我将文件存储在 Blob 存储帐户内的一个容器中 我需要在第二个容器中创建一个 zip 文件 其中包含第一个容器中的文件 我有一个使用辅助角色和 DotNetZip 工作的解决方案 但由于 zip 文件的大小最终可能达到 1GB 我担心在进
  • 让网络摄像头在 OpenCV 中工作

    我正在尝试让我的网络摄像头在 Windows 7 64 位中的 OpenCV 版本 2 2 中捕获视频 但是 我遇到了一些困难 OpenCV 附带的示例二进制文件都无法检测到我的网络摄像头 最近我发现这篇文章表明答案在于重新编译一个文件 o
  • ASP.NET Core 中间件与过滤器

    在阅读了 ASP NET Core 中间件之后 我对何时应该使用过滤器以及何时应该使用中间件感到困惑 因为它们似乎实现了相同的目标 什么时候应该使用中间件而不是过滤器 9频道有一个关于此的视频 ASP NET 怪物 91 中间件与过滤器 h
  • 当Model和ViewModel一模一样的时候怎么办?

    我想知道什么是最佳实践 我被告知要始终创建 ViewModel 并且永远不要使用核心模型类将数据传递到视图 这就说得通了 让我把事情分开 但什么是Model 和ViewModel一模一样 我应该重新创建另一个类还是只是使用它 我觉得我应该重
  • 构建 C# MVC 5 站点时项目之间的处理器架构不匹配

    我收到的错误如下 2017 年 4 月 20 日构建 13 23 38 C Windows Microsoft NET Framework v4 0 30319 Microsoft Common targets 1605 5 警告 MSB3
  • 如何高效计算连续数的数字积?

    我正在尝试计算数字序列中每个数字的数字乘积 例如 21 22 23 98 99 将会 2 4 6 72 81 为了降低复杂性 我只会考虑 连续的数字 http simple wikipedia org wiki Consecutive in
  • 如何在 ASP.NET Core 中注入泛型的依赖关系

    我有以下存储库类 public class TestRepository Repository

随机推荐

  • Docker - 无法从容器内部 ping 主机子网上的任何内容

    我有一台 IP 地址为 192 168 11 10 的 Mac 主机 我有一个使用默认网络配置运行的 docker compose 项目 我需要从 docker 容器内连接到 IP 地址 192 168 11 11 上的设备 从容器内 我可
  • jUnit 在多种文化中测试 Double.toString

    我有一个开源库 其中有大量比较字符串形式的数字的单元测试 这些测试通过良好en GB en US以及其他文化中数字通常以以下形式书写1 234 00 然而 在德国和法国等文化中 这些值的格式不同 因此测试会失败 如何强制 jUnit 测试运
  • R - 查找包含所有字符串/模式的所有向量元素 - str_detect grep

    样本数据 files in path c a 4 0 name 2015 NY RDS b 4 0 name 2016 CA RDS c 4 0 name 2015 PA RDS strings to find c 4 0 PA 我想要一个
  • 多个表行作为backbone.js 视图?

    所以我有一个数据网格 网格中的每个项目都有一个关联的模型和视图 我需要将每个项目渲染为two表行以实现所需的 UI 不 这不是我的设计 第一次尝试 在视图中render 方法 只需渲染两行并将它们添加到this el 然后我将每个视图附加到
  • 将向量转换为向量(优雅的方式)

    我想知道是否有一种优雅的方式或内置函数来转换vector
  • 在绑定到 Winforms 数据源的 gridview 的 bool 列中显示是/否?

    我有一个绑定到数据源 Windows 窗体 VB NET 的 gridview 其中一列是布尔类型的属性 我想在该列中显示 是 否 而不是 0 1 或 真 假 这可能吗 您可以编辑绑定列的显示吗 我遇到了同样的问题 不幸的是我没有找到优雅的
  • 使用 Tensorflow 对象检测 api 打乱训练数据集

    我正在使用 Faster RCNN 模型和 Tensorflow 对象检测 API 来开发徽标检测算法 我的数据集按字母顺序排列 因此有一百个阿迪达斯徽标 然后是一百个苹果徽标等 我希望在训练时对其进行洗牌 我在配置文件中添加了一些值 tr
  • UIResponder 问题

    今晚我一直在与 UIResponder 作斗争 这是我的困境 如果我输入 BOOL canBecomeFirstResponder return YES 到我的 mainViewController 然后我可以获得摇动事件 void mot
  • 无法打开流:是一个目录

    我在尝试使用 php 将上传的文件从临时文件夹移动到所需的文件时收到以下警告 警告 move uploaded file test function move uploaded file 无法打开流 是第 69 行 home filenam
  • MySQL 8 中索引 JSON 列

    所以我正在尝试 json 列 Mysql 8 0 17 应该可以使用多值 JSON 索引 如下所示 CREATE INDEX data nbr idx ON a1 CAST data gt nbr AS UNSIGNED ARRAY 我有像
  • 如何使用 JavaScript 函数验证字段?

    我创建了一个表单 从文档中的示例 https getbootstrap com docs 4 0 components forms在 验证 自定义样式 部分 我在 cumpolsory 输入中添加了 必需 属性 并且验证进展顺利 现在我需要
  • 如何将自定义 Lambda 层包含到管道堆栈中? (AWS-CDK)

    我有两堆 应用栈 管道栈 将自定义 lambda 层包含到管道堆栈中以便将代码位置信息中继回我的应用程序堆栈的官方方法是什么 我已经按照文档使常规 lambdas 工作 在这里找到 https docs aws amazon com cdk
  • ASP.Net MVC Angular 2 最终版

    有人尝试过 Angular 2 RC Final 和 ASP Net MVC 吗 我在使用 ASP Net MVC 配置 Angular 2 RC 6 时遇到问题 直到 beta 17 一切正常 具有以下配置的 package json 似
  • “npm start”导致错误 - ENOENT:没有这样的文件或目录... package.json [关闭]

    Closed 这个问题需要调试细节 help minimal reproducible example 目前不接受答案 我尝试使用 NPX 创建一个 React 应用程序 一切都很顺利 但是当我跑步时npm start 我收到以下错误 np
  • 如何为 3 组添加一些列值?

    我有 3 列 SAMPN PERNO 循环 以及对应于3种模式的实用程序 角豆和步行 我想添加具有相同 SAMPN PERNO 循环的行的实用程序 适用于 car car bus bus walk walk walk bus 和 Bus w
  • Sqlite 数据库未从 Android 资产文件夹复制

    我正在尝试将名为 adinpect 的数据库从资产文件夹复制到应用程序数据库文件夹 但它不起作用 代码 在主活动 onCreate 中 仅用于测试 try String destPath data data getPackageName d
  • Rails 引擎线程安全 - ActiveResource

    我的 Rails 3 1 应用程序使用一个引擎 我想知道对该引擎的访问是否是线程安全的 我的引擎中有 lib mymodule rb 它看起来像这样 module MyModule def self my method begin data
  • XSLT 递归父/子组合

    非常有趣的Python赏金问题 https stackoverflow com questions 37170543 recursively search for parent child combinations and build tr
  • 识别 Eigen 中的临时对象创建

    正如 Eigen C 库中的文档在许多地方指出的那样 为了在计算时间方面获得最大性能 我们需要尽可能避免临时对象 在我的应用程序中 我处理动态大小矩阵 我想知道在计算中临时矩阵的创建 有没有通用的方法来识别临时矩阵的创建 例如 Eigen
  • opencv imshow with waitKey 在 Mac OS X 10.10.2 上太慢(使用 c++)

    我在 Mac OS X 10 10 2 上使用 opencv c 来处理视频帧并显示它们 使用 waitKey 来显示视频的 imshow 的性能极其缓慢 我有以下代码 它可以正确显示高清 1920x1080 灰度帧 只是它的运行速度慢了大