windows下给摄像头添加音频

需要安装opencv(视频)、pygame(音频)

采用双线程(注意修改自己的路径)

源码如下:

#读取视频,添加音频

import pygame

from concurrent.futures import ThreadPoolExecutor, wait

import cv2

import sys

import datetime

 

is_camera_open = False

 

def camera_monitor():

    # 读取视频/摄像头

    video = cv2.VideoCapture(0)

    # 命名窗口,第二个参数表示窗口可缩放

    cv2.namedWindow('video', 0)

 

    # 摄像头未正确打开则退出

    if not video.isOpened():

        print('Could not open video')

        sys.exit()

    print("设置为True")

    global is_camera_open

    is_camera_open = True

    print("已经设置为TRUE")

 

    while True:

        # 读取当前帧

        ok, frame = video.read()

        if not ok:

            break

        # 函数执行开始时间

        timer = cv2.getTickCount()

        # 计算fps

        fps = cv2.getTickFrequency() / (cv2.getTickCount() - timer)

 

        # 显示提示信息(图像,文字内容,坐标,字体,大小,颜色,字体厚度) #cv2.LINE_AA为抗锯齿,看起来会平滑一些

        cv2.putText(frame, "FPS : " + str(int(fps)), (100, 50),

                    cv2.FONT_HERSHEY_SIMPLEX, 0.75, (50, 170, 50), 2, cv2.LINE_AA)

        # 显示时间

        datet = str(datetime.datetime.now())

        cv2.putText(frame, "Time:" + datet, (100, 20),

                    cv2.FONT_HERSHEY_SIMPLEX, 0.75, (0, 255, 255), 2, cv2.LINE_AA)

 

        # 显示结果

        cv2.imshow("video", frame)

 

        # 按ESC退出

        k = cv2.waitKey(1) & 0xff

        if k == 27:

            is_camera_open = False

            break

    video.release()

    cv2.destroyAllWindows()

 

 

# camera_monitor()

 

def playMusic(filename, loops=0, start=0.0, value=0.5):

 

    played = False

    while True:

        pygame.mixer.init()  # 音乐模块初始化

        global is_camera_open

        print('\r is_camera_open ' + str(is_camera_open), end='')

 

        if not played and not is_camera_open:

            continue

 

        if not played:

            pygame.mixer.music.load(filename)

            # pygame.mixer.music.play(loops=0, start=0.0) loops和start分别代表重复的次数和开始播放的位置。

            pygame.mixer.music.play(loops=5, start=start)

 

            pygame.mixer.music.set_volume(value)

 

        if pygame.mixer.music.get_busy() == True:

            played = True

        else:

            if flag:

                pygame.mixer.music.stop()  # 停止播放

                break

 

        if not is_camera_open and played:

            pygame.mixer.music.stop()  # 停止播放

            break

 

 

def main():

    pool = ThreadPoolExecutor(max_workers=2)

    future = []

 

    camera_thread = pool.submit(camera_monitor)

 

    music_thread = pool.submit(playMusic, r'C:\Users\14392\Desktop\video\jet.wav')

    future.append(camera_thread)

    future.append(music_thread)

    wait(future)

 

if __name__ == "__main__":

    main()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值