分别使用tkinter,pygame,OpenCV播放视频,发现均有视频播放变慢的现象,源码如下:
使用tkinter,OpenCV播放视频:

from tkinter import *
import cv2
from PIL import Image, ImageTk

def video_play():
while video.isOpened():
ret, frame = video.read() # 读取照片
# print(‘读取成功’)
if ret == True:
img = cv2.cvtColor(frame, cv2.COLOR_BGR2RGBA) # 转换颜色使播放时保持原有色彩
current_image = Image.fromarray(img).resize((1920,1080)) # 将图像转换成Image对象
imgtk = ImageTk.PhotoImage(image=current_image)
movieLabel.imgtk = imgtk
movieLabel.config(image=imgtk)
movieLabel.update() # 每执行以此只显示一张图片,需要更新窗口实现视频播放
else:
break

root = Tk()
root.overrideredirect(True)
root.state(“zoomed”)
movieLabel = Label(root,width=1920,height=1080) # 创建一个用于播放视频的label容器
movieLabel.pack()
while True:
video = cv2.VideoCapture(r"E:\放松\xjj\掠影\原神\1612179174bfee75ebffaca79a.mp4_last.mp4") # 使用opencv打开本地视频文件
video_play() # 调用video_play实现视频播放

mainloop()
使用pygame,OpenCV播放视频:

import pygame
import sys
import cv2
import numpy as np
import os
import moviepy.editor as mpy

if name == ‘main’:
# 截取背景音乐
# audio_background = mpy.AudioFileClip(‘cs1.mp4’)
#
# audio_background.write_audiofile(‘cs1.mp3’)
pygame.init() # 初始化pygame
FPS = 100
#设置窗口位置
os.environ[‘SDL_VIDEO_WINDOW_POS’]=“%d,%d” % (5,30)
FPSClock = pygame.time.Clock()
size = width, height = 960, 540 # 设置窗口大小
screen = pygame.display.set_mode(size) # 显示窗口
color = (255, 255, 255) # 设置颜色
ogg=pygame.mixer.Sound(“cs1.mp3”)
#pygame.mixer.music.load(“”)

videoCapture = cv2.VideoCapture("cs2.mp4")
ogg.play()while True:a=pygame.time.get_ticks()if videoCapture.isOpened():#从opncv读一段视频进来ret, frame = videoCapture.read()if ret :frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)# frame = np.asarray(frame.resize((1920, 1080)))frame = cv2.resize(frame,(960,540),interpolation=cv2.INTER_CUBIC)frame = np.rot90(frame, k=-1)frame = pygame.surfarray.make_surface(frame)frame=pygame.transform.flip(frame,False,True)screen.blit(frame, (0,0))for event in pygame.event.get():  # 遍历所有事件if event.type == pygame.QUIT:  # 如果单击关闭窗口,则退出sys.exit()pygame.display.flip()  # 更新全部显示FPSClock.tick(FPS)pygame.time.get_ticks()

使用OpenCV播放视频:

import cv2
import numpy as np

import moviepy.editor as mpy

import pygame
pygame.init()

ogg=pygame.mixer.Sound(“cs1.mp3”)

背景音乐

cap = cv2.VideoCapture(“cs1.mp4”)
fps = cap.get(cv2.CAP_PROP_FPS)

ogg.play()

while (True):
# 读帧
ret, frame = cap.read()
# 显示图像
cv2.imshow(“video”, cv2.resize(frame,(960,540),interpolation=cv2.INTER_CUBIC))
# 图像的按比例压缩,
if cv2.waitKey(int(1000/fps)) & 0xFF == ord(‘q’):
break
cap.release()
cv2.destroyAllWindows()
.................................................................................................

基于OPenCV的视频播放变慢相关推荐

  1. 基于OpenCV的车辆变道检测

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 本期教程我们将和小伙伴们一起研究如何使用计算机视觉和图像处理技术来 ...

  2. 基于opencv的图像阴影消除车辆变道检测

    基于opencv的图像阴影消除 详细代码在这!!! 最大滤波 def max_filtering(N, I_temp):wall = np.full((I_temp.shape[0]+(N//2)*2 ...

  3. 使用opencv开发视频播放器一

    最近由于项目需求,要在界面中内嵌一个简单的视频播放器,能够打开视频,逐帧播放,进度条拖动等功能. 因此,首先尝试使用opencv编写.原因:1.便于后续处理:2.opencv提高的接口较完善.很快就动 ...

  4. 基于OpenCV的图像分割处理!

    ↑↑↑关注后"星标"Datawhale 每日干货 & 每月组队学习,不错过 Datawhale干货 作者:姚童,Datawhale优秀学习者,华北电力大学 图像阈值化分割是 ...

  5. 基于 OpenCV 和 OpenPose 的棒球挥杆人体姿势估计

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 介绍 人体姿态估计是一个非常有趣的领域,如果我们能够将诸如棒球摆动 ...

  6. 基于opencv实现模块化图像处理管道

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在这篇文章中,我们将学习如何为图像处理实现一个简单的模块化管道,我 ...

  7. 基于OpenCV实战:3步实现图像降噪

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 在本文中,我们将展示如何通过三个简单的步骤来实现降噪.我们将使用机 ...

  8. 基于OpenCV实战的图像处理:色度分割

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达 通过HSV色阶使用彩色图像可以分割来分割图像中的对象,但这并不是分 ...

  9. 基于OpenCV的单目摄像机测距

    点击上方"小白学视觉",选择加"星标"或"置顶" 重磅干货,第一时间送达本文转自|新机器视觉 我的论文方向目前是使用单目摄像头实现机器人对人 ...

最新文章

  1. html5通html5通,HTML5 history详解
  2. 【Web】Eclipse + Maven + Struts搭建服务器
  3. 【ARM】arm串行通信
  4. 织梦电脑站手机站伪静态+全套伪静态规则-固定目录版
  5. Java工作笔记-Spring Boot中使用Mybatis操作达梦数据库
  6. docker将容器设置与宿主机为同一局域网
  7. CISCO路由器NTP服务器配置
  8. NWT失败反省:谁给汝之权力,竟然敢要吾走人?
  9. 水下清淤机器人_水下清淤机器人启用,箱涵清淤有了新招数~
  10. usb无线网卡linux驱动,Linux系统下安装USB无线网卡驱动方法
  11. Docker容器访问外部世界
  12. ida android so 断点,IDA Pro 7.0+调试Android so飘云整理(基于Android5.1.1)
  13. too few variables specified 怎么解决
  14. Java化小数为分数_杭电oj1717——小数化分数(java实现)
  15. PV016R1K1T1NMMC派克变量柱塞泵
  16. Svelte 实现 keypress 快捷键功能
  17. 阿里巴巴、腾讯、百度和京东金融落户雄安新区 | 亚马逊加入FB与微软阵营,共同支持开源AI平台ONNX
  18. 【论文笔记】Rethinking Semantic Segmentation from a Sequence-to-Sequence Perspectivewith Transformers
  19. 济南有了“盒区房”,帝王蟹、波士顿龙虾最快30分钟送达
  20. linux断电分区表丢失,linux修复丢失的分区表

热门文章

  1. 潘多拉游戏机用linux,linux中的潘多拉! Busybox!
  2. siki学院unity初级案例炸弹人取空位置点的Bug
  3. 计算机考研院校对比与分析-南京理工VS华南理工
  4. 《数据结构C语言版》——二叉树详解(图文并茂)
  5. 2021年压力管道巡检维护考试题及压力管道巡检维护模拟试题
  6. 网段和子网掩码及IP个数的计算
  7. 北京大学计算机专业王腾,王腾-理论与应用地球物理研究所-北大地空学院
  8. 数据库压力测试方法小结
  9. linux中ldap添加属性,linux – ldap_add没有这样的对象(32)匹配dn dc = domain dc = com
  10. excel 透视表 vba_使用Excel VBA删除数据透视表计算字段