python中的用户指针

2024-01-10

*我正在尝试显示使用 v4l 捕获的网络摄像头的预览。

下面是代码的大概样子:

from ctypes import *
from v4l2 import *
from Image import fromstring
from Tkinter import Tk, Label
from ImageTk import PhotoImage
from ctypes.util import find_library

libc = CDLL(find_library('c'))
posix_memalign = libc.posix_memalign
getpagesize = libc.getpagesize


device_name = '/dev/video0'
ps = preview_settings = {
    'width': 320,
    'height': 240,
    'pixformat': 'RGB',
    }
PIX_FMT = V4L2_PIX_FMT_RGB555


preview = Tk()
image = PhotoImage(ps['pixformat'], (ps['width'], ps['height']))
label = Label(preview, text='Preview', image=image, width=ps['width'], height=ps['height'])
label.pack()


capability = v4l2_capability()
size = v4l2_frmsizeenum()
format = v4l2_format()
request = v4l2_requestbuffers()
buffer = v4l2_buffer()
b_address = c_void_p()
frame_name_count = '0'
type = V4L2_BUF_TYPE_VIDEO_CAPTURE

device = open(device_name, 'rw')

ioctl(device, VIDIOC_QUERYCAP, addr(capability))

size.pixel_format = PIX_FMT 
size.index = 0

format.type = type
format.fmt.pix.pixelformat = PIX_FMT
format.fmt.pix.width = size.discrete.width
format.fmt.pix.height = size.discrete.height
format.fmt.pix.field = V4L2_FIELD_NONE
format.fmt.pix.bytesperline = 0
format.fmt.pix.sizeimage = 0

request.type = type
request.memory = V4L2_MEMORY_USERPTR
request.count = 1

ioctl(device, VIDIOC_S_FMT, addr(format))

ioctl(device, VIDIOC_G_FMT, addr(format))

ioctl(device, VIDIOC_REQBUFS, addr(request))

posix_memalign(addressof(b_address), getpagesize(), format.fmt.pix.sizeimage)

buffer.type = request.type
buffer.memory = request.memory
buffer.index = 0
buffer.m.userptr = b_address.value
buffer.length = format.fmt.pix.sizeimage

while True:

    ioctl(device, VIDIOC_QBUF, addr(buffer))

    ioctl(device, VIDIOC_STREAMON, cast(type, c_void_p))

    ioctl(device, VIDIOC_DQBUF, addr(buffer))

    preview_data = string_at(buffer.m.userptr, buffer.length)
    im = fromstring(ps['pixformat'], (ps['width'], ps['height']), preview_data)
    image.paste(im)
    preview.update()

我得到 ValueError: not enough image data


好吧,我导入

c_lib = CDLL(find_library('c'))
posix_memalign = c_lib.posix_memalign
getpagesize = c_lib.getpagesize

然后之后

ioctl(device, VIDIOC_S_FMT, addr(format))
ioctl(device, VIDIOC_G_FMT, addr(format))

诸如此类的事情,我试图获得记忆

posix_memalign(addressof(b_address), getpagesize(), format.fmt.pix.sizeimage)

现在 b_address 不再 = None b_address 是这样的 c_void_p(145014784)

然后我开始循环,QBUF,DQBUF,等等。

问题是,当我调用 pygame.image.frombuffer 时

pg_img = pygame.image.frombuffer(
         buffer.m.userptr,
         (format.fmt.pix.width, format.fmt.pix.height),
         preview_settings['pixformat']
         )

I get 类型错误:需要一个字符缓冲区对象


好像ctypes.string_at(address, size) http://docs.python.org/library/ctypes.html#ctypes.string_at就是你想要的。这将为您提供一个 python 字符串缓冲区,其中包含指针地址处的内存内容。这应该适合传递给Image.fromstring or pygame.image.frombuffer.

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

python中的用户指针 的相关文章

  • 通过最小元素比较对 5 个元素进行排序

    我必须在 python 中使用元素之间的最小比较次数来建模对 5 个元素的列表进行排序的执行计划 除此之外 复杂性是无关紧要的 结果是一个对的列表 表示在另一时间对列表进行排序所需的比较 我知道有一种算法可以通过 7 次比较 总是在元素之间
  • Spark KMeans 无法处理大数据吗?

    KMeans 有几个参数training http spark apache org docs latest api python pyspark mllib html highlight kmeans pyspark mllib clus
  • OpenCV 无法从 MacBook Pro iSight 捕获

    几天后 我无法再从 opencv 应用程序内部打开我的 iSight 相机 cap cv2 VideoCapture 0 返回 并且cap isOpened 回报true 然而 cap grab 刚刚返回false 有任何想法吗 示例代码
  • 如何使用 OpencV 从 Firebase 读取图像?

    有没有使用 OpenCV 从 Firebase 读取图像的想法 或者我必须先下载图片 然后从本地文件夹执行 cv imread 功能 有什么办法我可以使用cv imread link of picture from firebase 您可以
  • 如何在Python中获取葡萄牙语字符?

    我正在研究葡萄牙语 角色看起来很奇怪 我怎样才能解决这个问题 代码 import feedparser import random Vou definir os feeds feeds conf feedurl http pplware s
  • BeautifulSoup 中的嵌套标签 - Python

    我在网站和 stackoverflow 上查看了许多示例 但找不到解决我的问题的通用解决方案 我正在处理一个非常混乱的网站 我想抓取一些数据 标记看起来像这样 table tbody tr tr tr td td td table tr t
  • 添加不同形状的 numpy 数组

    我想添加两个不同形状的 numpy 数组 但不进行广播 而是将 缺失 值视为零 可能最简单的例子是 1 2 3 2 gt 3 2 3 or 1 2 3 2 1 gt 3 2 3 1 0 0 我事先不知道形状 我正在弄乱每个 np shape
  • Flask如何获取请求的HTTP_ORIGIN

    我想用我自己设置的 Access Control Allow Origin 标头做出响应 而弄清楚请求中的 HTTP ORIGIN 参数在哪里似乎很混乱 我在用着烧瓶 0 10 1 以及HTTP ORIGIN似乎是这个的特点之一object
  • 在Python中获取文件描述符的位置

    比如说 我有一个原始数字文件描述符 我需要根据它获取文件中的当前位置 import os psutil some code that works with file lp lib open path to file p psutil Pro
  • IO 密集型任务中的 Python 多线程

    建议仅在 IO 密集型任务中使用 Python 多线程 因为 Python 有一个全局解释器锁 GIL 只允许一个线程持有 Python 解释器的控制权 然而 多线程对于 IO 密集型操作有意义吗 https stackoverflow c
  • Jupyter Notebook 内核一直很忙

    我已经安装了 anaconda 并且 python 在 Spyder IPython 等中工作正常 但是我无法运行 python 笔记本 内核被创建 它也连接 但它始终显示黑圈忙碌符号 防火墙或防病毒软件没有问题 我尝试过禁用两者 我也无法
  • Fabric env.roledefs 未按预期运行

    On the 面料网站 http docs fabfile org en 1 10 usage execution html 给出这个例子 from fabric api import env env roledefs web hosts
  • 对年龄列进行分组/分类

    我有一个数据框说df有一个柱子 Ages gt gt gt df Age 0 22 1 38 2 26 3 35 4 35 5 1 6 54 我想对这个年龄段进行分组并创建一个像这样的新专栏 If age gt 0 age lt 2 the
  • 有没有办法检测正在运行的代码是否正在上下文管理器内执行?

    正如标题所述 有没有办法做到这样的事情 def call back if called inside context print running in context else print called outside context 这将
  • 有人用过 Dabo 做过中型项目吗? [关闭]

    Closed 这个问题是基于意见的 help closed questions 目前不接受答案 我们正处于一个新的 ERP 风格的客户端 服务器应用程序的开始阶段 该应用程序是作为 Python 富客户端开发的 我们目前正在评估 Dabo
  • 使用 Python 绘制 2D 核密度估计

    I would like to plot a 2D kernel density estimation I find the seaborn package very useful here However after searching
  • Python:如何将列表列表的元素转换为无向图?

    我有一个程序 可以检索 PubMed 出版物列表 并希望构建一个共同作者图 这意味着对于每篇文章 我想将每个作者 如果尚未存在 添加为顶点 并添加无向边 或增加每个合著者之间的权重 我设法编写了第一个程序 该程序检索每个出版物的作者列表 并
  • 如何计算 pandas 数据帧上的连续有序值

    我试图从给定的数据帧中获取连续 0 值的最大计数 其中包含来自 pandas 数据帧的 id date value 列 如下所示 id date value 354 2019 03 01 0 354 2019 03 02 0 354 201
  • 发送用户注册密码,django-allauth

    我在 django 应用程序上使用 django alluth 进行身份验证 注册 我需要创建一个自定义注册表单 其中只有一个字段 电子邮件 密码将在服务器上生成 这是我创建的表格 from django import forms from
  • 使用 Python 的 matplotlib 选择在屏幕上显示哪些图形以及将哪些图形保存到文件中

    我想用Python创建不同的图形matplotlib pyplot 然后 我想将其中一些保存到文件中 而另一些则应使用show 命令 然而 show 显示all创建的数字 我可以通过调用来避免这种情况close 创建我不想在屏幕上显示的绘图

随机推荐

  • 如何在 Android Studio 中生成具有自定义名称的输出 APK 文件?

    我想使用自定义名称生成输出 apk 文件 例如 默认情况下 android studio 生成 app debug apk 文件 但我希望它是 MyAppName myCurrentProdFlavour vMyVersionName ap
  • SQLite 不区分重音的搜索

    有没有办法在 SQLite 中执行不区分重音的 LIKE 查询 例如 这个查询 SELECT FROM users WHERE name LIKE Andre 会返回 Andr the Giant Andre Agassi etc 如果有什
  • 如何为Postman的binary类型的请求体构建RestTemplate?

    我正在尝试使用 RestTemplate 调用第三方服务 但是当我尝试通过 Java 代码调用该服务时 它会抛出 BadRequest 错误 由于我无法弄清楚如何为 API 构建 Resttemplate 因此我在这里请求有关如何为此类请求
  • 计算中常用值的预定义 - 它会改变什么吗?

    我自动生成 C 代码来计算大型表达式 并尝试通过简单的示例来弄清楚在单独的变量中预定义某些子部分是否有意义 举一个简单的例子 假设我们计算以下形式的内容 include
  • 如何在 html 中的 href 路径中使用变量

    我正在对我的 css 文件进行版本控制 以在需要时 强制浏览器 清除缓存
  • 如何使用 npm 在 64 位系统上构建 32 位二进制文​​件?

    我正在开发一个应用程序 我计划使用它来分发节点 webkit https github com rogerwang node webkit 它在 Windows 上仅具有 32 位二进制文 件 我的操作系统是 Windows 7 Ultim
  • 如何创建动态“包含或喜欢”表达式以与针对 OData 服务的 Linq 一起使用

    我尝试使用 System Linq Expressions Expression WPF c 4 0 创建动态查询工具 它针对 OData 服务运行 到目前为止 只要我限制构建 Equal GreaterThan 等选项的条件 一切都正常
  • Django APIClient 登录不起作用

    我在单元测试中使用 Django Rest Framework API 进行身份验证时遇到问题 通过浏览器访问系统时 系统按预期工作 然而 当我在以下端点向以下类发送 put 请求时 我收到 401 HTTP 状态 class UserDe
  • vb6 winhhtp:安全通道支持中发生错误

    我编写了一个 VB6 程序 它使用 winhttp dll 向远程服务器发送消息或从远程服务器接收消息 它在各种操作系统中都运行良好 Windows 2000 WinXP Win7 Win8 最近服务器提供商通知我他们将 逐步停止对 SHA
  • memcached可以用来加锁吗?

    memcached可用于缓存静态数据 这可以减少数据库查找 并且通常不会memcached get id and memcached set id 但是 将其用于锁定机制可以吗 做memcache set and memcached get
  • php 中的友元函数?

    php是否像c 一样支持友元函数 您很可能指的是类 变量范围 在 PHP 中 你有 public private 受保护的 But not friend能见度 这protectedwhile 当要使对象的成员仅对其他扩展 继承对象可见时使用
  • 这个 Objective-C/XCode 注释是什么 // [START_EXCLUDE]

    查看 iOS 上 GCM 通知的示例代码 https github com googlesamples google services blob master ios gcm GcmExample AppDelegate m L31 htt
  • 在 Yii 中何时使用组件以及何时使用扩展?

    我对 protected 中组件和扩展文件夹的用途有点困惑 请澄清 根据我对 Yii 的一点经验 组件是可以帮助您根据模型编写业务逻辑的类 您肯定不想在控制器中编写所有工作 那么您需要组件来分发代码并在控制器中调用它 扩展就像库一样 基本上
  • 使用 fxml (scenebuilder)制作的进度条来使用方法中的值[重复]

    这个问题在这里已经有答案了 我希望进度条显示返回双值的方法的值 但它不起作用 但我认为这不是主要问题 即使我只使用特定的数字 它也不起作用 请帮助我 提前致谢 这是一个具体的问题 所以我搜索了 cery 很长时间没有结果 所以如果你知道更好
  • nAnt 删除超过 7 天的文件

    我想创建一个目标来清理特定文件夹中超过 7 天的日志文件 当我尝试在文件集中放入 日期 元素时出现错误 我该怎么办
  • 更新单个表的多行

    我需要更新超过 60k 行的表的每一行 目前我正在这样做 public void updateRank Map
  • 超类型-子类型数据库设计

    我有一个关于关系数据库中超类型子类型设计的问题 如果我有一个带有两个子类型表的超类型 我会将与两个子类型表的 PK 相关的超类型的 PK 作为 FK 假设我有这样的事情 Type 类型 ID PK 超级类型 身份验证 类型ID FK Sub
  • CMake 中的布尔变量取反?

    假设我在 CMake 中设置以下变量 set foo TRUE 现在 我想定义一个bar具有相反布尔值的变量foo 换句话说 在这种情况下 我想要bar to be FALSE 或等价物 例如false or 0 完成此操作的一种方法是 i
  • 一起部署 DotNetNuke 和单独的 ASP.NET 应用程序 - 可能的问题?

    我这样做是为了积极主动地尝试阻止由此可能产生的任何潜在问题 情况是 我们正在为客户开发一个 ASP NET 应用程序 该应用程序将处理客户的在线订购 该应用程序将使用与其当前 WinForms 应用程序使用的相同数据库 这里没有真正的问题
  • python中的用户指针

    我正在尝试显示使用 v4l 捕获的网络摄像头的预览 下面是代码的大概样子 from ctypes import from v4l2 import from Image import fromstring from Tkinter impor