OpenCV3 错误:“无法停止流:设备的 ioctl 不合适”

2023-11-24

我正在尝试使用 OpenCV 3.2 读取 .mov 文件的帧(来自门波康达频道)。我在 Ubuntu 16.04 64 位设置上通过 Anaconda 使用 Python 3.5.3。

问题是,当 OpenCV 命中时,我收到以下错误消息cap.read()调用,循环立即中断并捕获if num == 0有条件的。

这是我正在运行的完整代码:

import cv2
import numpy as np
import sys

f = sys.argv[1]
cap = cv2.VideoCapture(f)

frames = []
num = 0
while cap.isOpened():
    ret, frame = cap.read()
    if not ret: break
    gframe = cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)

    frames.append(gframe)
    num += 1
    if num % 100 == 0:
        frames.append(gframe)
    if num % 1000 == 0:
        print(num)

if num == 0:
    print("Something went wrong: no frames found.")
    exit(0)

cap.release()



user@ubuntu:/data$ python read.py movie.mov 
Unable to stop the stream: Inappropriate ioctl for device
Something went wrong: no frames found.
user@ubuntu:/data$
  

我在 StackOverflow 上发现了几个关于这个主题的问题,但它们并不能完全反映我的具体情况:

  • 这个问题建议重建 OpenCV(也使用 Python 2)。这对我来说不是一个选择,因为我正在尝试用 Anaconda 来做到这一点。
  • 这两个问题(here and here)在OpenCV论坛上没有得到任何令人满意的答案。
  • This one有热烈的讨论和彻底的答案,但它是特定于 perl 的。

对于第三点——这里还有很多其他问题引用了这句话inappropriate ioctl for device但很难看出其中是否有任何一个与这个问题直接相关。

顺便说一句:我已经在我的 macOS 机器上安装了这个完全相同的 opencv3 conda 包,并且我在此处粘贴的代码工作得很好,并且在我在 Ubuntu 机器上尝试过的完全相同的 .mov 文件上运行得很好。

有任何想法吗?


通过完全绕过它解决了这个问题。

使用了opencv-原料conda-forge 的 OpenCV 配方。在里面recipe文件夹是 conda 的构建信息。我修改了build.sh文件,更改以下选项:

-DBUILD_PNG=1
-DBUILD_JPEG=1
-DWITH_CUDA=1
-DWITH_FFMPEG=1

ran conda build --numpy 1.12 recipe来自父目录(必须指定 NumPy 版本,因为构建脚本要求列出了numpy x.x这意味着您必须在运行时提供版本),然后等待。

Took forever(说真的,在一台非常强大的机器上花了几个小时——时间消耗是 CUDA),但构建最终成功完成。

然后只需安装本地构建的 bz2 存档即可(conda install --use-local opencv)。不再有奇怪的 ioctl 错误消息,上面的脚本工作得很好。

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

OpenCV3 错误:“无法停止流:设备的 ioctl 不合适” 的相关文章

随机推荐

  • R 绘制独立的函数图例

    我想通过 R 绘制具有独立图例的图 同时尊重色阶 这就是我所拥有的 library plotly X lt data frame xcoord 1 6 ycoord 1 6 score 1 6 gender c M M M F F F ag
  • 将事件路由到 eventhub EventProcessor

    我有不同类型的活动 例如 有些数据是遥测数据 有些是错误信息等 我认为创建多个 IEventProcessor 实现是一个好主意 每个实现对应一种事件类型 因此每个实现都会以不同的方式处理事件 就像写入文件或数据库一样 将事件路由到特定 E
  • 如何使用日期时间索引在 pandas 中进行插值重新索引?

    我有一个带有日期时间索引的系列 我想要的是使用其他一些任意日期时间索引来插入这些数据 本质上我想要的是如何使以下代码片段或多或少工作 from pandas import Series import datetime datetime in
  • tcpdf:图像质量差

    我正在使用 TCPDF 创建使用其 writeHTML 函数从 HTML 输入转换而来的 PDF 文件 但是 PDF 中的图像质量较差 而原始图像质量较高 如预期 图像为 PNG 格式 我已经尝试使用 SetJPEGQuality 100
  • 如何限制 Firebase 中产品的注册

    如果我创建一个新产品 使用简单的身份验证 有一个 创建用户 API 如何限制它 以便只有受邀请的电子邮件 通过电子邮件或通过一次性密钥 才能注册 似乎不太符合规则 但我可能遗漏了一些东西 首先 我应该指出 核心 Firebase API 使
  • 如何在Zend框架的不同模块中使用相同的模型?

    我正在致力于在现有项目中实现 Zend Framework 该项目具有公共营销区域 私人会员区域 管理站点和营销活动管理站点 目前 这些内容的组织很差 营销区域和会员区域的控制器脚本都位于网站的根目录下 然后是一个单独的管理文件夹和另一个用
  • F# Async.Parallel 是否可以加快计算速度?

    Async Parallel 结构真的有助于提高多核系统上的计算速度吗 这里是否以某种方式涉及 NET TPL 任务 open System let key Console ReadKey true let start System Dat
  • 网络共享上的 .NET 4.0 应用程序导致 SecurityException

    今天 我在尝试远程调试为 NET 4 0 运行时构建的应用程序时遇到了一个奇怪的问题 该应用程序驻留在网络共享上并由远程计算机执行 但是 由于 System Configuration ConfigurationManager GetSec
  • 一个衬垫可以重命名一堆文件

    我一直在寻找一个 Linux 命令行单行程序来一次重命名一堆文件 pattern1 a pattern1 b pattern1 c 命令执行后我应该得到 pattern2 a pattern2 b pattern2 c for i in p
  • ggplot特定粗线

    如何才能绘制出一条线比另一条线粗的线呢 我尝试使用geom line size X 但这会增加两条线的粗细 假设我想增加第一列的厚度 如何实现这一点 a lt cbind rnorm 100 rnorm 100 nav 1 10 sa lt
  • “python setup.py install”和“pip install”之间的区别

    我有一个外部包想要从 tar 文件安装到我的 python virtualenv 中 安装软件包的最佳方法是什么 我发现了两种方法可以做到这一点 解压 tar 文件 然后运行python setup py install在提取的目录内部 p
  • 无法创建新文件:设备尚未准备好

    我正在使用 Java 创建一个新文件 但出现异常 Exception in thread main java io IOException The device is not ready at java io WinNTFileSystem
  • 如何通过 Google Places Autocomplete API 以多种语言执行搜索来获取城市的唯一标识符​​?

    当在另一种语言 API 中再次查找同一城市以找到同一城市的这个地方时 我需要获取城市名称的唯一标识符 Example 我通过 Google API 自动完成位置进行搜索 如下所示 城市 纽约 结果是 纽约 NY 美国 国家代码 U S 例如
  • 通过 Javascript / jQuery 检测 Android 手机

    我如何检测正在使用的设备是移动网站的 Android 设备 我需要将某些CSS属性应用到Android平台 Thanks 看看那个 http davidwalsh name detect android JavaScript var ua
  • vscode 智能感知不工作

    我刚刚下载了适用于 linux ubuntu 14 04 的 Visual Studio 代码 我创建了一个简单的 test cpp 并在 vscode 中编写它 但智能感知不起作用 这是test cpp中的代码 struct test i
  • Redshift COPY 操作在 SQLAlchemy 中不起作用

    我正在尝试在 SQLAlchemy 中进行 Redshift COPY 当我在 psql 中执行以下 SQL 时 它可以正确地将对象从我的 S3 存储桶复制到我的 Redshift 表中 COPY posts FROM s3 mybucke
  • HashMap:以随机顺序迭代键值对

    我有一个 HashMap 每次获得迭代器时 我想以不同的随机顺序迭代它们的键值对 从概念上讲 我想在调用迭代器之前 洗牌 地图 或者如果您愿意 洗牌 迭代器 我看到有两个选择 1 使用 LinkedHashMap 的方法并在内部保留条目列表
  • Lua脚本调用C共享库的最佳方式?

    我有更多的 Python 和 CTYPES 背景 并且正在尝试找出从 Lua 脚本调用标准 C 共享库的最佳方法 我听说过 Alien http alien luaforge net 但不确定它的最新情况如何 意思是定期更新吗 例如 我知道
  • Unity 2020 和 Firebase 出现问题(无法解析引用“UnityEditor.iOS.Extensions.Xcode”)

    我将 Unity 上的 Android 应用程序从 2019 12 升级到 2020 1 在 Unity 2019 中 Firebase 可以正常工作 但对于 Unity 2020 我有 2 个错误 我不用IOS 只用安卓 如何解决这个问题
  • OpenCV3 错误:“无法停止流:设备的 ioctl 不合适”

    我正在尝试使用 OpenCV 3 2 读取 mov 文件的帧 来自门波康达频道 我在 Ubuntu 16 04 64 位设置上通过 Anaconda 使用 Python 3 5 3 问题是 当 OpenCV 命中时 我收到以下错误消息cap