python语言有界面控件的拍照录像程序代码QZQ

import cv2
import numpy as np
import random
import string
import tkinter as tk
from tkinter import messagebox

创建一个窗口

cv2.namedWindow(‘frame’)

尝试不同的视频源参数

cap = cv2.VideoCapture(0)

标志位,用于判断是否正在录制

recording = False

生成随机文件名

def generate_random_filename():
letters_and_digits = string.ascii_letters + string.digits
return ‘’.join(random.choice(letters_and_digits) for _ in range(10))

定义拍照函数

def take_photo():
ret, frame = cap.read()
if ret:
random_filename = generate_random_filename() + ‘.jpg’
cv2.imwrite(random_filename, frame)
messagebox.showinfo(“拍照成功”, f"照片已保存为 {random_filename}")

定义录制视频函数

def start_stop_recording():
global recording
global out
recording = not recording
if recording:
random_video_filename = generate_random_filename() + ‘.avi’
fourcc = cv2.VideoWriter_fourcc(*‘XVID’)
out = cv2.VideoWriter(random_video_filename, fourcc, 20.0, (640, 480))
messagebox.showinfo(“录制开始”, f"开始录制视频,保存为 {random_video_filename}")
else:
if out is not None:
out.release()
out = None
messagebox.showinfo(“录制停止”, “停止录制视频”)

def close_program():
if out is not None:
out.release()
cap.release()
root.destroy()

root = tk.Tk()
root.title(“摄像头拍照录像”)

设置窗口大小为 400x300,并将其定位在屏幕左上角(100,100)的位置

root.geometry(“400x300+100+100”)

创建拍照按钮,并设置其大小和位置

photo_button = tk.Button(root, text=“拍照”, command=take_photo)
photo_button.place(x=50, y=50, width=100, height=30)

创建录像按钮,并设置其大小和位置

record_button = tk.Button(root, text=“开始/停止录像”, command=start_stop_recording)
record_button.place(x=50, y=100, width=150, height=30)

创建退出按钮,并设置其大小和位置

quit_button = tk.Button(root, text=“退出”, command=close_program)
quit_button.place(x=50, y=150, width=80, height=30)

if not cap.isOpened():
messagebox.showerror(“错误”, “无法打开摄像头”)
else:
while True:
ret, frame = cap.read()
if not ret:
print(“无法获取帧”)
break
cv2.imshow(‘frame’, frame)

    root.update()

    if recording and out is not None:
        out.write(frame)

cap.release()
cv2.destroyAllWindows()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

EYYLTV

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值