Python超简单实现跳动爱心代码/opencv/几十行代码/新手也能学会


1、OpenCV逐帧处理视频获得坐标像素点

从网上寻找带有此同款爱心视频,原视频出处——《点燃我,温暖你》,截取出爱心一个周期的跳动,不会剪辑软件的也可以用opencv剪辑,代码参考如下:opencv截取视频代码
心跳的视频也可以从B找一些up主的片段节选。
截取视频片段后,opencv对视频进行逐帧处理,主要是消除视频中的噪声,干扰信息,只保留爱心信息的像素点信息。

不想做以上步骤截取处理视频,想直接获得像素点信息也可以留下邮箱我发给你

import numpy as np
import cv2 as cv
dict = {} # 空字典用来储存每一帧的像素点信息# 检查视频是否成功读取
def cv_isOpen(vc):if vc.isOpened():# open是bool类型,提示视频是否打开# frame是当前帧的数据open, frame = vc.read()return open, frameelse:open = Falsereturn open# 将当前帧爱心信息的像素点保存为列表待用
def cv_threshold(img, lower: int, upper: int):lst = []for i in range(0, len(img)):for j in range(0, len(img[i])):if img[i][j][2] > lower and img[i][j][2] < upper:x = jy = ilst.append((x, y, random.randint(1,2)))return lstdef cv_getPixel(vc):open = cv_isOpen(vc)i = 0while open:_open, frame = vc.read()# 一帧一帧读取if frame is None:print('读取失败')breakif _open:# 视频帧截取成700*700,根据爱心位置设置截取位置area = frame[300:1000, 0:700]# 根据爱心相关信息像素点位置保存,像素点信息集中位置的阈值不同视频下有差异dict[i] = cv_threshold(area, 70, 170)i+=1if __name__ == '__main__':vc = cv.VideoCapture('heart.mp4')cv_getPixel(vc)# 储存到npy文件中np.save('heartPixel.npy', dict)

2、用tkinter把每一帧信息复刻出来

import numpy as np
from tkinter import *# 两个偏置值调整爱心在画布的位置
X_BIAS = 250
Y_BIAS = 0
FRAMES_SKIP = 5 # 每次跳的帧数,越大越快,越小越丝滑,根据计算机性能设置
TOTAL_FRAMES = 50 # 我截取的一个跳动周期有50帧的信息
COLOR = '#ff7171' # 我选取这个粉红色def draw(main: Tk, render_canvas: Canvas, render_frame=0):render_canvas.delete('all')render(render_canvas, render_frame)main.after(1, draw, main, render_canvas, render_frame + FRAMES_SKIP)def render(render_canvas: Canvas, render_frame):for x, y, size in dict[render_frame % TOTAL_FRAMES]:render_canvas.create_rectangle(x+X_BIAS, y+Y_BIAS, size+x+X_BIAS, size+y+Y_BIAS, width=0, fill=COLOR)if __name__ == '__main__':dict = np.load('heartPixel.npy', allow_pickle='TRUE').item()root = Tk()canvas = Canvas(root, bg='black', height=720, width=1280)canvas.pack()draw(root, canvas)root.mainloop()

3、补充

若生成的像素点太多,导致运行十分缓慢,可以用以下函数减少像素点信息,可以多用几次,不影响结果。

import random
import numpy as np
dict = np.load('heartPixel.npy', allow_pickle='TRUE').item()
for i in range(TOTAL_FRAMES):j = 0while j < len(dict[i]):del new_dict[i][j]j+=2
np.save('newHeartPixel.npy', dict)

Python超简单实现跳动爱心代码/opencv/几十行代码/新手也能学会相关推荐

  1. python超简单超基础的免费小说爬虫

    python超简单超基础的免费小说爬虫 需要准备的环境 选取网页 思路 代码 总结 需要准备的环境 1.python 3.0及以上皆可 2.requests库,os,re 选取网页 找一个免费的小说网 ...

  2. Python 超简单3行代码提取音乐高潮(附批量提取)!

    怎么样,是不是迫不及待想往下读了?不要急,让我们从原理开始慢慢讲起. 1.原理简介 不知道大家有没有这样的体会,大部分时候,歌曲的高潮部分通常是重复次数最多的部分.因此我们可以根据这一个特征,提出我们 ...

  3. Python 超简单3行代码提取音乐高潮部分

    有些时候,为了设定手机铃声或者发抖音视频,我们会耗费大量时间在剪辑音乐高潮部分上.那么这个音乐高潮的提取能不能自动化呢?当然可以. 先来看看,怎么样来提取孤芳自赏提取高潮后的部分: 怎么样,是不是迫不 ...

  4. Python 超简单格式化代码,仅需一行命令

    复制别人的代码进行使用的时候,最烦的就是看到编辑器上显示的各种红色的.橙色的提示线吧? 尤其是那些不遵守PEP8规则的代码,等号两边的空格会加到你手软. 真希望哪天全世界写Python的小伙伴们都能统 ...

  5. html+css编写简单构造跳动爱心

    一.主要思路是 二.完整参考代码: 三.附上部分参考注释 四.最终效果 一.主要思路是 构造一个大盒子,里面放left.right.bottom三个小盒子,并将三个盒子设置好边框宽度.高度.弧度达到想 ...

  6. python超简单小游戏代码-Python实现简单的猜单词小游戏

    本文实例为大家分享了Python实现猜单词小游戏的具体代码,供大家参考,具体内容如下 思路 1.一个words列表里存放若干的单词,例如:["extends", "pri ...

  7. 基于python的opencv图像处理实现对斑马线的检测(最简单的方法!!!几十行代码搞定!!!)

    基本思路 斑马线检测通过opencv图像处理来进行灰度值转换.高斯滤波去噪.阈值处理.腐蚀和膨胀后对图像进行轮廓检测,通过判断车辆和行人的位置,以及他们之间的距离信息,当车速到超过一定阈值时并且与行人 ...

  8. Python超简单容易上手的画图工具库

    今天,在网上发现一款很棒的python画图工具库.很简单的api调用就能生成漂亮的图表.并且可以进行一些互动. pyecharts 是一个用于生成 Echarts 图表的类库.Echarts 是百度开 ...

  9. Python 超简单一键美化你的文章

    在平时写文章的时候,我都会注意在中文和英文单词之间保留一个空格的习惯,这样能使文本具有良好的可读性. 但是我经常忽略某些半角字符(数字和符号)与中文之间的空格,导致可读性比较差,在阅读别人的文章或者修 ...

最新文章

  1. 无线Trace脚本(旧格式)-平均延时
  2. Ubuntu 更新后 VirtualBox 无法启动
  3. DeepLearning tutorial(5)CNN卷积神经网络应用于人脸识别(详细流程+代码实现)
  4. 走向.NET架构设计—第四章—业务层分层架构(后篇)
  5. 优先队列如何按照pair 的第二关键字排序(对比vector按照pair第二关键字排序)
  6. 什么是 SAP Spartacus 里的 module augmentation
  7. 把运行在 Docker 容器内的 Microsoft SQL 服务器部署到 SAP Kyma 中
  8. mysql字符串字段类型_MySQL字符串字段类型选择的一般规则
  9. 源码解析之HashMap实现原理
  10. 手机麦克风结构原理图_麦克风阵列的基本原理、结构组成及声学效果简介
  11. 34. 后台模块开发(1)
  12. 正则全攻略使用手册,你确定不进来看看吗
  13. 银河麒麟桌面操作系统 V10 SP1 安装教程
  14. java基础学习总结_java基础班学习心得(感言)
  15. .net 开源混淆器 ConfuserEx
  16. c语言中正确的常量表达式,C语言常量变量表达式
  17. 无聊 做一个支付宝打赏二维码
  18. 南邮 OJ 2029 节奏大师
  19. mysql 服务没有报告任何错误_mysql无法启动服务没有报告任何错误
  20. 微服务中API网关的作用是什么?

热门文章

  1. 【Java愚公】idea自动补全变量名称和属性名称的快捷键
  2. 18-60W全系列安全PD充电器快充方案
  3. kafka 入门概念和架构,以及应用场景
  4. c语言队列实现FIFO
  5. 攀枝花市河石坝社区计算机培训,青春志愿 爱在社区
  6. 如何将音频文件转换为MP3格式?
  7. 直播带货系统,实现直播音频的播放
  8. MSCOMCTL.OCX文件缺少找不到如何解决的?
  9. CSS3如何实现投影正片叠底效果
  10. 10.14_魅族手机音乐播放无故暂停,MetroUICss-tile中的字如何居中