九九江南风送暖,予你樱花

Ava ·
更新时间:2024-11-13
· 775 次阅读

九九江南风送暖,予你樱花

樱花盛放的歌曲

(推荐:跟着视频音乐的步伐,阅读本文哦(。◕ˇ∀ˇ◕))

文章目录九九江南风送暖,予你樱花小序:正篇:1.准备好高清的樱花视频,我们将通过代码把视频分解为图片。**([本文涉及的代码及素材均已上传](https://pan.baidu.com/s/1mTmeTrcDHALmv1a9V0AzDA),提取码:tju5)**2.重头戏——将我们想要输入的文字映射到每一帧的图片。3.最后将图片组成gif或者video,大功告成!ヽ(゚∀゚)メ(゚∀゚)ノ4.gif动态展示(~ ̄▽ ̄)~ : 小序:

惊蛰将至,所谓“九九江南风送暖,融融翠野启春耕”。春天到了,你和喜欢的人见面了嘛?我没有…(〒︿〒)

看了央视微博转发武大微博的“樱花”,我羡慕了,嫉妒心使我“面目全非”!!!

在这里插入图片描述

So,let us给喜欢的人(o(* ̄3 ̄)o )也来用代码敲出这美丽的樱花吧。去告诉她,九九江南风送暖,予你樱花。

正篇: 1.准备好高清的樱花视频,我们将通过代码把视频分解为图片。(本文涉及的代码及素材均已上传,提取码:tju5) 通过cv2读取视频并获得视频的帧率,帧宽以及帧高。 import cv2 cap = cv2.VideoCapture("E:/yinghua/yinghua.mp4") # 获取视频 isOpened = cap.isOpened() # 判断是否打开 isOpened = cap.isOpened() # 判断是否打开 print(isOpened) fps = cap.get(cv2.CAP_PROP_FPS) # 帧率 width = int(cap.get(cv2.CAP_PROP_FRAME_WIDTH)) # 帧宽 height = int(cap.get(cv2.CAP_PROP_FRAME_HEIGHT)) # 帧高 读取视频的每一帧(也可以每10帧取一张,结合实际适当调整),并将图片以.jpg格式保存,quality=100%。 i = 0 while(isOpened): if i == 10000: break else: i += 1 flag, frame = cap.read() # 读取每一张flag(是否读取成功),frame(读取的帧) fileName = 'image'+str(i)+'.jpg' print(fileName) if flag: # 将帧图片按100%的质量保存 cv2.imwrite("E:/yinghua/imgsrc/%s" % (fileName), frame, [cv2.IMWRITE_JPEG_QUALITY, 100]) print('end') 2.重头戏——将我们想要输入的文字映射到每一帧的图片。

-这里我们采用python的内置库PIL,涉及简单的图案填充原理。

import cv2 import os def draw(pic): img = cv2.imread('E:/yinghua/imgsrc/' + pic) img = img[:, :, (2, 1, 0)] blank = Image.new("RGB", [len(img[0]), len(img)], "white") drawObj = ImageDraw.Draw(blank) n = 10 font = ImageFont.truetype('C:/Windows/Fonts/Microsoft YaHei UI/msyhbd.ttc', size=n - 1) for i in range(0, len(img), n): for j in range(0, len(img[0]), n): text = '0718' drawObj.ink = img[i][j][0] + img[i][j][1] * 256 + img[i][j][2] * 256 * 256 # 画笔的颜色可以通过draw的ink属性来改变: # draw.ink = 0(R) + 0(G) * 256 + 0(B) * 256 * 25 drawObj.text([j, i], text[int(j / n) % len(text)], font=font) print('完成处理——', i, j) blank.save('E:/trial/new_' + pic, 'jpeg') filelist = os.listdir('E:/yinghua/imgsrc/') for file in filelist: draw(file)

如图示例:

这里需要注意的一些地方:

blank = Image.new(“RGB”, [len(img[0]), len(img)], “white”)#这里通过 [len(img[0]), len(img)]设置画板的高宽。 n的大小需结合实际图片大小进行调整,保证清晰度的同时也要保证图片的展示效果。 text = ‘0718’(这里是想要填充的文字内容,写给你喜欢的人哦!!!,尽量用英文,为了清晰度。 drawObj.ink = img[]+img[]* 256 + img[] * 256 * 256#将像素点的颜色取出填充到画板的ink(墨水)上,一开始我也不理解这里颜色值的写法。后来就扒了一下ink的源码,这里的大小只是索引值,ImageDraw里面的palette(调色板)采用一维数组储存颜色值,所以ink是颜色的索引值。(色值数组的shape为1*24,RGB三通道。) drawObj.text([j, i], text[int(j / n) % len(text)], font=font)#这里的是[j,i],j,i相当于x,y轴坐标。n=10,代表每10个像素为一组填充图案。 选取的视频尽量以深色一点的为主,这里由于我选取的视频为浅色,所以后期对图片进行了饱和度的处理。 3.最后将图片组成gif或者video,大功告成!ヽ(゚∀゚)メ(゚∀゚)ノ

1.通过dir文件目录的索引,完成gif的生成。(如果你采用组成视频的方式,务必注意将图片resize为统一大小。)

import imageio import os outfilename = "E:/yinghua/yinghua.gif" # 转化的GIF图片名称 gif_images = [] filelist = os.listdir('E:/trail/') sum = 0 for img in filelist: gif_images.append(imageio.imread("E:/trail/" +img)) # 读取图片 imageio.mimsave(outfilename, gif_images, fps=5) # 转化为gif动画

2.组成视频的代码也奉上!(适当文件及目录名称适当调整即可使用)

import cv2 import os img = cv2.imread('E:/yinghua/1.jpg') imgInfo = img.shape print(imgInfo) size = (imgInfo[1], imgInfo[0]) print(size) filelist = os.listdir('E:/trail/') videowrite = cv2.VideoWriter("E:/DeepLearn/face Detection/video/01.mp4", -1, 5, size)#路径+编码器+视频帧数+宽高大小 for image in filelist: img = cv2.imread('E:/trial/' + image) img = cv2.imread(img) videowrite.write(img)#写入方法 1.jpg data print("end") 4.gif动态展示(~ ̄▽ ̄)~ :

在这里插入图片描述

备注:在手机上的观看效果更佳哦!(由于上传内存的限制,没有办法上传完整的gif)

春天到了,你等的人也在等你,终将会遇见,慢慢来吧,慢慢约会吧。。ヾ(๑╹◡╹)ノ" ♥ ٩(๑❛ᴗ❛๑)۶


作者:努力变优秀的"大鱼-78"



樱花

需要 登录 后方可回复, 如果你还没有账号请 注册新账号