使用 pygame 进行 blit opencv 相机捕获会抛出 TypeError:参数 1 必须是 pygame.Surface,而不是 cv2.VideoCapture

2023-12-09

我是 pygame 的新手,以前从未使用过它,想知道如何使用 pygame 和 opencv 将网络摄像头传输或显示到表面,但我不断收到消息:

Traceback (most recent call last):
 File "<filename>.py", line 51, in <module>      
   mainWindow()
 File "<filename>.py", line 43, in mainWindow    
   draw_window()
 File "<filename>.py", line 24, in draw_window   
   WINDOW.blit(camera)
TypeError: argument 1 must be pygame.Surface, not cv2.VideoCapture
import pygame 
import cv2

pygame.init()

# setting the width and height of the window
WIDTH, HEIGHT = 1280, 720
WINDOW = pygame.display.set_mode((WIDTH, HEIGHT))
pygame.display.set_caption("name me")

# background color 
color = (0, 0, 0)

# 0 is the built in webcam
camera = cv2.VideoCapture(0)
camera.set(cv2.CAP_PROP_FRAME_WIDTH, 700)
camera.set(cv2.CAP_PROP_FRAME_HEIGHT, 900)

def draw_window():
    # background color 
    WINDOW.fill((color))

    # display object onto the surface (screen)
    WINDOW.blit(camera)

    # update the display
    pygame.display.update()


FPS = 30
def mainWindow():
    # keeping the window open 
    run = True 
    clock = pygame.time.Clock()
    while run: 
        # capping it at the set frame rate 
        clock.tick(FPS)

        for event in pygame.event.get():
            if event.type == pygame.QUIT:
                run = False

        draw_window()


    # closing the window 
    pygame.quit()


# main #
mainWindow()

你只能blit a pygame.Surface。因此,您必须从相机中逐帧获取并将其转换为pygame.Surface object.

抓住相机框架:

success, camera_image = capture.read()

将相机帧转换为pygame.Surface对象使用pygame.image.frombuffer:

camera_surf = pygame.image.frombuffer(
              camera_image.tobytes(), camera_image.shape[1::-1], "BGR")

在函数中这样做draw_window:

def draw_window():
    # background color 
    WINDOW.fill((color))
    
    # display object onto the surface (screen)
    success, camera_image = camera.read()
    if success:
          camera_surf = pygame.image.frombuffer(camera_image.tobytes(), camera_image.shape[1::-1], "BGR")
          WINDOW.blit(camera_surf, (0, 0))
    
    # update the display
    pygame.display.update()

另请参阅python pygame.camera.init() 没有 vidcapture and PyGameExamplesAndAnswers - 相机和视频


替代但最小的例子:

import pygame
import cv2

capture = cv2.VideoCapture(0)
success, camera_image = capture.read()

window = pygame.display.set_mode(camera_image.shape[1::-1])
clock = pygame.time.Clock()

run = success
while run:
    clock.tick(60)
    for event in pygame.event.get():
        if event.type == pygame.QUIT:
            run = False
    
    success, camera_image = capture.read()
    if success:
        camera_surf = pygame.image.frombuffer(
            camera_image.tobytes(), camera_image.shape[1::-1], "BGR")
    else:
        run = False
    window.blit(camera_surf, (0, 0))
    pygame.display.flip()

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

使用 pygame 进行 blit opencv 相机捕获会抛出 TypeError:参数 1 必须是 pygame.Surface,而不是 cv2.VideoCapture 的相关文章

  • 使用 Python 创建 MIDI

    本质上 我正在尝试从头开始创建 MIDI 并将它们放到网上 我对不同的语言持开放态度 但更喜欢使用Python 两种语言之一 如果这有什么区别的话 并且想知道我应该使用哪个库 提前致谢 看起来这就是您正在寻找的 适用于 Python 的简单
  • 在 python 3 中使用子进程

    我使用 subprocess 模块在 python 3 中运行 shell 命令 这是我的代码 import subprocess filename somename py in practical i m using a real fil
  • Pyqt-如何因另一个组合框数据而更改组合框数据?

    我有一个表 有 4 列 这 4 列中的两列是关于功能的 一个是特征 另一个是子特征 在每一列中 所有单元格都有组合框 我可以在这些单元格中打开txt 我想 当我选择电影院作为功能时 我只想看到子功能组合框中的电影名称 而不是我的 数据 中的
  • Python 是解释型的还是编译型的,或者两者兼而有之?

    据我了解 An 解释的语言是由解释器 将高级语言转换为机器代码然后执行的程序 实时运行和执行的高级语言 它一次处理一点程序 A compiled语言是一种高级语言 其代码首先由编译器 将高级语言转换为机器代码的程序 转换为机器代码 然后由执
  • 根据 Pandas 中的列表对多列进行排序

    感谢有关如何根据 pandas 中的倍数列表对给定多列进行排序的任何提示 如下所示 import pandas as pd sort a a d e sort b s1 s3 s6 sort c t1 t2 t3 df pd DataFra
  • ValueError:不支持连续[重复]

    这个问题在这里已经有答案了 我正在使用 GridSearchCV 进行线性回归的交叉验证 不是分类器也不是逻辑回归 我还使用 StandardScaler 对 X 进行标准化 我的数据框有 17 个特征 X 和 5 个目标 y 观察 约11
  • CNTK 抱怨 LSTM 中的动态轴

    我正在尝试在 CNTK 中实现 LSTM 使用 Python 来对序列进行分类 Input 特征是固定长度的数字序列 时间序列 标签是 one hot 值的向量 Network input input variable input dim
  • Pandas:如何将数据框插入 Clickhouse

    我正在尝试将 Pandas 数据框插入 Clickhouse 这是我的代码 import pandas import sqlalchemy as sa uri clickhouse default localhost default ch
  • Python Django-如何从输入文件标签读取文件?

    我不想将文件保存在我的服务器上 我只想在下一页中读取并打印该文件 现在我有这个 index html
  • Python、subprocess、call()、check_call 和 returncode 来查找命令是否存在

    我已经弄清楚如何使用 call 让我的 python 脚本运行命令 import subprocess mycommandline lumberjack sleep all night work all day subprocess cal
  • GradientTape 根据损失函数是否被 tf.function 修饰给出不同的梯度

    我发现计算的梯度取决于 tf function 装饰器的相互作用 如下所示 首先 我为二元分类创建一些合成数据 tf random set seed 42 np random seed 42 x tf random normal 2 1 y
  • Werkzeug 中的线程和本地代理。用法

    首先 我想确保我正确理解了功能的分配 分配本地代理功能以通过线程内的模块 包 共享变量 对象 我对吗 其次 用法对我来说仍然不清楚 也许是因为我误解了作业 我用烧瓶 如果我有两个 或更多 模块 A B 我想将对象C从模块A导入到模块B 但我
  • `pyqt5'错误`元数据生成失败`

    我正在尝试安装pyqt5使用带有 M1 芯片和 Python 3 9 12 的 mac 操作系统 我怀疑M1芯片可能是原因 我收到一个错误metadata generation failed 最小工作示例 directly in the t
  • 在 Windows 上使用带有对数刻度的 matplotlib 时出现 Unicode 错误

    我正在使用 python 2 6 和 matplotlib 如果我运行 matplotlib 库页面中提供的示例 histogram demo py 它工作正常 我已经大大简化了这个脚本 import numpy as np import
  • 从 python 检测 macOS 中的暗模式

    我正在编写一个 PyQt 应用程序 我必须添加一个补丁 以便在启用暗模式的 Macos 上可以读取字体 app QApplication Fix for the font colours on macos when running dark
  • PIL - 需要抖动,但限制调色板会导致问题

    我是 Python 新手 正在尝试使用 PIL 来执行 Arduino 项目所需的解析任务 这个问题涉及到Image convert 方法以及调色板 抖动等选项 我有一些硬件能够一次仅显示 16 种颜色的图像 但它们可以指定为 RGB 三元
  • 导入错误:无法导入名称“时间戳”

    我使用以下代码在 python 3 6 3 中成功安装了 ggplot conda install c conda forge ggplot 但是当我使用下面的代码将其导入笔记本时 出现错误 from ggplot import Impor
  • Python问题:打开和关闭文件返回语法错误

    大家好 我发现了这个有用的 python 脚本 它允许我从网站获取一些天气数据 我将创建一个文件和其中的数据集 有些东西不起作用 它返回此错误 File
  • bs4 `next_sibling` VS `find_next_sibling`

    我在使用时遇到困难next sibling 并且类似地与next element 如果用作属性 我不会得到任何返回 但如果用作find next sibling or find next 然后就可以了 来自doc https www cru
  • 使用 Python 将对象列表转为 JSON

    我在转换时遇到问题Object实例到 JSON ob Object list name scaping myObj base url u number page for ob in list name json string json du

随机推荐

  • 如何检查区域设置是否为 UTF-8?

    我正在与 Yocto 合作 为 ARM 设备 i MX 6Quad 处理器 创建嵌入式 Linux 发行版 我已经使用变量配置了所需区域设置的列表 IMAGE LINGUAS de de fr fr en gb en gb iso 8859
  • 如何在 C# 中从 IntPtr 获取 byte[]

    我想通过一个IntPtr一个方法需要一个byte C 中的参数 这可能吗 如果可能的话我该怎么做 thx 查看Marshal Copy method byte managedArray 1 2 3 4 5 int size Marshal
  • 抽象方法的目的是什么?

    abstract public class car abstract void drive 正如上面的代码片段所示 Java 中抽象方法的具体用途是什么 据我所知 根据定义 他们不允许拥有身体 通过声明抽象方法 您并没有提供实现 而是强制扩
  • 使用 Pandas 将重复项提取到新数据框中

    我有一个包含很多列的大型数据框 其中一列应该是唯一 ID 另一列是年份 不幸的是 唯一 ID 列中有重复项 我知道如何生成所有重复项的列表 但我真正想做的是将它们提取出来 以便仅保留第一个条目 按年份 例如 数据框当前看起来像这样 带有一堆
  • 从 Fortran 运行时 METIS 段错误

    我正在尝试使用METIS用于网格划分的库 作为我为有限元计算编写的 Fortran 程序的一部分 METIS 是用 C 编写的 但它应该可以与 Fortran 90 一起正常工作 但我不断遇到段错误 一个潜在的问题是 我向一些参数提供了空指
  • 如何在单声道下强制应用程序的单实例?

    因此 我能够在 Windows 上强制执行应用程序的单个实例 如下所示 STAThread class method Program Main args array of string begin var mutex new Mutex t
  • 如何从命令行使用特定修订版号“恢复到此修订版”?

    我目前正在制作一个脚本 在其中我已经熟悉了Tortoise SVN 及其相应的命令行功能 我正确更新了脚本 以通过一系列测试找到正确构建的 修订版 在脚本记录该变量 具体的版本号 后 我更新到 HEAD 修订版 这样我就可以在遇到问题的过程
  • Dropwizard 配置文件安全性

    配置文件 yml 用于使用 Dropwizard 0 9 2 最新版本 开发的 REST API api 所需的大部分凭据 例如数据库密码密钥等 都存储在配置文件中 我们已经根据参考文献中提到的项目实现了大部分内容 位于dropwizard
  • Cocos2d如何切换场景

    cocos2d中如何切换场景 我有我的主类 HellowWorldLayer h m 但我似乎无法正确切换场景 我努力了 CCDirector sharedDirector replaceScene Race node And CCDire
  • Javascript:数组加数字[重复]

    这个问题在这里已经有答案了 JavaScript 中的某些操作会返回意外结果 有一个是极其奇怪的 1 1 任何人都可以解释为什么它会这样工作吗 由于 运算符而转换为空字符串 所以 1 gt 1 数字也转换为字符串
  • UnreachableBrowserException 尝试使用 IEDriver 在 Selenium Webdriver 中启动

    我有一套在 Firefox 和 Chrome 中运行得非常出色的自动化功能 并且我还想启动 IEDriver 的实例 我已经按照以下方式设置了 IEDriverSelenium 的 Google 代码 wiki 具有正确的路径 如果我更改路
  • 具有模糊和斜角的 GLPaint 画笔效果

    我正在开发一个基于 GLPaint 代码的绘图应用程序 有人知道如何获得这样的效果吗 我尝试过使用不同的画笔宽度和高度值 但它仍然保持不变 我需要考虑 glBlendFunc 吗 或者彻底改变画笔的宽度和高度是否可以实现 Thanks in
  • C++ 中是否有生产就绪的无锁队列或哈希实现 [关闭]

    Closed 此问题正在寻求书籍 工具 软件库等的推荐 不满足堆栈溢出指南 目前不接受答案 我一直在谷歌上搜索 C 中的无锁队列 我找到了一些代码和一些试验 但我无法编译任何东西 无锁哈希也将受到欢迎 概括 到目前为止我还没有得到肯定的答案
  • 如何在命令行中读取浮点数?

    如何在命令行中读取浮点数或整数 test py 11 22 4 11 7 99 9 69 我试过了 numbersList float sys argv 1 len sys argv import sys args map float sy
  • 正则表达式匹配 C# 中的所有大写和下划线

    我需要从字符串中查找仅包含大写字母和下划线的所有单词 string str ABCD EFG LMNO hello world PQR ST UVW US Apple PQR ZYZ PQR LMN ZYZ string pattern A
  • 10.6中如何在Interface Builder中创建NSImageCell的NSMatrix

    如何在 Interface Builder 3 2 1 即为 Snow Leopard 制作的 中创建 NSImageCell 单元格 通常位于 NSImageView 中 的矩阵 NSMatrix 对象 在 过去 您可以拖动 NSImag
  • Spring @Transactional 属性是否适用于私有方法?

    如果我有一个 事务性Spring bean中的私有方法上的注释 注释有什么作用吗 If the Transactional注释位于公共方法上 它可以工作并打开事务 public class Bean public void doStuff
  • 如何绘制堆叠柱类型的 Google 图表

    我有这个表结构 Name Grade Count X VeryGood 10 X Excellent 2 X Failed 0 Y VeryGood 7 Y Excellent 1 Y Failed 2 我想在堆积谷歌图表中显示这些数据 类
  • 使用宏将数据文件导入新选项卡时,如何提示用户选择文件?

    我有一个宏 当前正在创建一个新工作表 并将另一个 Excel 文件导入到这个新工作表中 然后 该工作表中的数据将被拉入工作簿的其他区域 正在导入的文件将始终具有不同的文件名 如何调整以下代码以提示用户选择文件 目录不会改变 子导入需求 工作
  • 使用 pygame 进行 blit opencv 相机捕获会抛出 TypeError:参数 1 必须是 pygame.Surface,而不是 cv2.VideoCapture

    我是 pygame 的新手 以前从未使用过它 想知道如何使用 pygame 和 opencv 将网络摄像头传输或显示到表面 但我不断收到消息 Traceback most recent call last File