python新手制作一个模仿原神的插卡器(1)

        我是一个高中生,因为会一点python然后就被班主任叫去做一个抽号的小程序,用来每天早读课老师抽幸运儿出去背书,然后我发挥我极致的想象力,最终用random库做了一个命令行式的小抽号器。

import time
from random import randint

def main():
    while True:
        num_list = []
        num = int(input('数量:'))
        for i in range(1,num):         
            new_num = randint(1,46)#我们班一共45人
            while new_num in num_list:
                new_num = randint(1,46)#防止有重复的号码
            num_list.append(new_num)
        for number in num_list:
            print(number)
            time.sleep(0.1)

if __name__ == '__main__':
    main()

简单但是能用,运行效果大概长这样:

但是吧,别的班用的都是年段长亲手上阵搞得千年以前的flash动画,太高级,描述不出来,高级到我以为我回到了七八十年代。

【图片】

没有图片,因为我根本就没有原文件。(要是有的话就没有这个苦差事了)

然后我思来想去,能想到最好的动画就是把原神的动画模仿一下。

大体思路就是这样:

  1. 使用QT5创一个UI,然后有一些必要的按键。
  2. 然后点击抽卡按钮时,使用opencv+ffplayer播放原神抽卡时候的视频。
  3. 然后再制造动画模板,显示号数(或者人名)

然后我就开始痛苦的抽卡,扣视频,成功的将五种抽卡时的视频都弄了出来:

然后凭着我自学两年半的基础写出了个函数:

import time

import cv2
import numpy as np
from ffpyplayer.player import MediaPlayer


def video(way):

	url = f'video/{way}.mp4'
	#print(url)
	cap = cv2.VideoCapture(url)
	player = MediaPlayer(url)
	#print(cap)

	frame_width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH))
	frame_height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT))
	

	#cv2.namedWindow("No Border Window", cv2.WINDOW_NORMAL)
	#cv2.setWindowProperty("No Border Window", cv2.WND_PROP_FULLSCREEN, cv2.WINDOW_FULLSCREEN)

	fps = int(500 / cap.get(cv2.CAP_PROP_FPS))

	#print(self.frame_width,self.frame_height,self.fps)

	while(cap.isOpened()):
		ret,frame = cap.read()

		
		#print(ret,frame)
		try:
			src = cv2.resize(frame,(frame_width,frame_height),interpolation=cv2.INTER_CUBIC)
			cv2.imshow('',src)
		except:
			break
		if cv2.waitKey(fps) & 0xFF == ord('q'):
			break



	cap.release()
	cv2.destroyAllWindows()


if __name__ == '__main__':
	video('glod_ten')

但是不知道为什么,视屏播放完后,ffplayer还在那里播放音频,死命找原因,但是并没有找到

它是cv2.destroyAllWindows()函数运行完后还存在,我也试过用del指令删除ffplayer实例,于是它就卡在del指令那一行了。

正常来说不应该是音频播放完后,就不会再有声音了么?有大佬能看看哪里出了问题嘛?

(等待)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值