小白且秃头 2024-06-02 22:38 采纳率: 75%
浏览 3
已结题

为什么我这个代码无法打开摄像头(只有一个默认摄像头,且在其他代码中可以正常打开),且无法保存为图片并在pygame中的窗口显示

为什么我这个代码无法打开摄像头(只有一个默认摄像头,且在其他代码中可以正常打开),且无法保存为图片并在pygame中的窗口显示。其次,为什么我这个代码无法创建表格,并保存数据。最后该如何修改,我实在不知道咋改了……

import pygame

#设置窗口大小
size = 1000, 484
FPS = 60  #帧率
#背景颜色
DARKBLUE = (73, 119, 142)
BG = DARKBLUE  #指定背景颜色
#初始化pygame
pygame.init()
pygame.display.set_caption("停车场车牌识别计时系统")
#图标
ic_launcher = pygame.image.load('m1.jpg')
#设置图标
pygame.display.set_icon(ic_launcher)
#设置窗口大小
screen = pygame.display.set_mode(size)
screen.fill(BG)  #color
#帧率循环设置值
clock = pygame.time.Clock()
#主线程
Running = True
while Running:
    for event in pygame.event.get():
        #关闭并退出
        if event.type == pygame.QUIT:
            pygame.quit()
            exit()
    #更新界面
    pygame.display.flip()
    #控制最大帧率
    clock.tick(FPS)

import cv2

try:
    capture = cv2.VideoCapture(0)
except:
    print("Please connect the camera!")
#读取摄像头捕捉画面
sucess, img = capture.read()
#保存并退出
cv2.imwrite('file/test.jpg',img)
capture.release()
#加载并改变图片大小
image = pygame.image.load('file/test.jpg')
image = pygame.transform.scale(image, (640, 480))
#绘制视频画面
screen.blit(image, (2, 2))


from pandas import DataFrame
import os
import pandas as pd

#获取文件路径
cdir = os.getcwd()
path=cdir+'datafile/'
#读取路径
if not os.path.exists(path+'停车场车辆表.xlsx'):
    #根据路径建立文件夹
    os.makedirs(path)
    #车牌号、日期、时间、价格、状态
    carnfile=pd.DataFrame(columns=['carnumber','data','price','state'])
    #生成文件
    carnfile.to_excel(path+'停车场车辆表.xlsx',sheet_name='data')
    carnfile.to_excel(path+'停车场车辆表.xlsx',sheet_name='data')


  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2024-06-02 22:38
    关注

    引自免费微信小程序:皆我百晓生

    首先,让我们逐个解决你在代码中遇到的问题。

    1. 打开摄像头并将其显示在Pygame窗口上: 在你的代码中,你已经正确地导入了OpenCV库来捕获视频流,但是你没有在主循环中更新摄像头的帧。你需要将读取摄像头和显示图像的部分放入主循环里。以下是修改后的部分代码:
    import cv2
    
    # 初始化摄像头
    capture = cv2.VideoCapture(0)
    
    while Running:
        for event in pygame.event.get():
            # 关闭并退出
            if event.type == pygame.QUIT:
                pygame.quit()
                exit()
    
        # 读取摄像头捕捉画面
        success, img = capture.read()
        
        # 如果成功读取到帧
        if success:
            # 将BGR格式转换为RGB格式,因为Pygame需要RGB格式的图像
            rgb_image = cv2.cvtColor(img, cv2.COLOR_BGR2RGB)
            
            # 创建一个新的Pygame表面,并从OpenCV图像复制数据
            image_surface = pygame.surfarray.make_surface(rgb_image)
            
            # 显示图像
            screen.blit(image_surface, (2, 2))
    
        # 更新界面
        pygame.display.flip()
        # 控制最大帧率
        clock.tick(FPS)
    
    # 释放摄像头资源
    capture.release()
    
    1. 创建Excel表格并保存数据: 在你的代码中,你尝试两次将相同的数据写入同一个Excel文件的同一张工作表,这会导致覆盖之前的写入。这里是修正后的代码,它会检查文件是否存在,并在不存在的情况下创建一个新文件:
    import pandas as pd
    
    # 获取当前目录
    cdir = os.getcwd()
    path = cdir + 'datafile/'
    
    # 检查路径是否存在,如果不存在则创建
    if not os.path.exists(path):
        os.makedirs(path)
    
    # 检查文件是否已存在,如果不存在则创建新的Excel文件和数据表
    if not os.path.isfile(path + '停车场车辆表.xlsx'):
        data = {'carnumber': [], 'data': [], 'price': [], 'state': []}
        carnfile = pd.DataFrame(data)
        carnfile.to_excel(path + '停车场车辆表.xlsx', index=False)
    
    # 假设你想添加一些测试数据
    new_data = {
        'carnumber': ['ABC123', 'DEF456'],
        'data': ['2023-02-20', '2023-02-21'],
        'price': [100, 200],
        'state': ['available', 'occupied']
    }
    
    # 合并新数据到现有数据表
    carnfile = carnfile.append(new_data, ignore_index=True)
    carnfile.to_excel(path + '停车场车辆表.xlsx', index=False)
    

    请注意,为了测试这些更改,你需要确保你的环境中安装了pygamenumpyopencv-pythonpandas库。如果你还没有安装它们,可以通过下面的命令进行安装:

    pip install pygame numpy opencv-python pandas
    

    将上述代码片段合并到你的原始代码中,应该能解决你提到的所有问题。

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论 编辑记录
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 6月12日
  • 已采纳回答 6月4日
  • 创建了问题 6月2日

悬赏问题

  • ¥15 35114 SVAC视频验签的问题
  • ¥15 impedancepy
  • ¥15 在虚拟机环境下完成以下,要求截图!
  • ¥15 求往届大挑得奖作品(ppt…)
  • ¥15 如何在vue.config.js中读取到public文件夹下window.APP_CONFIG.API_BASE_URL的值
  • ¥50 浦育平台scratch图形化编程
  • ¥20 求这个的原理图 只要原理图
  • ¥15 vue2项目中,如何配置环境,可以在打完包之后修改请求的服务器地址
  • ¥20 微信的店铺小程序如何修改背景图
  • ¥15 UE5.1局部变量对蓝图不可见