广西麒铭建设有限公司网站泉州百度首页优化

web/2025/10/1 8:41:56/文章来源:
广西麒铭建设有限公司网站,泉州百度首页优化,如何申请ip地址和域名,html旅游网站模板效果 整体效果 局部图片放大效果 视频转换后带雪花特效,凑合看吧, 视频地址 准备工作 安装FFmpeg 电脑上安装ffpeg处理视频并设置环境变量, windows可以参考FFmpeg的安装教程这篇博客安装 mac可以直接执行brew install ffmpeg安装 安装python依赖包 执行pip3 install -…效果 整体效果 局部图片放大效果 视频转换后带雪花特效,凑合看吧, 视频地址 准备工作 安装FFmpeg 电脑上安装ffpeg处理视频并设置环境变量, windows可以参考FFmpeg的安装教程这篇博客安装 mac可以直接执行brew install ffmpeg安装 安装python依赖包 执行pip3 install -r requirements.txt 安装依赖包 requirements.txt 内容如下 attrs22.1.0 certifi2022.9.24 charset-normalizer2.1.1 decorator4.4.2 exceptiongroup1.0.4 ffmpeg1.4 idna3.4 imageio2.22.4 imageio-ffmpeg0.4.7 iniconfig1.1.1 moviepy1.0.3 numpy1.23.5 opencv-contrib-python4.6.0.66 opencv-python4.6.0.66 packaging21.3 Pillow9.3.0 pluggy1.0.0 proglog0.1.10 pyparsing3.0.9 pytest7.2.0 python3-tk0.0.0 requests2.28.1 tomli2.0.1 tqdm4.64.1 urllib31.26.12代码 video.py完整代码如下: import os, shutil, cv2, random import datetime import geventimport numpy as np from PIL import Image, ImageFont, ImageDraw from tkinter import Tk, filedialog from moviepy.audio.io.AudioFileClip import AudioFileClip from moviepy.video.io.VideoFileClip import VideoFileClipfps int() frames int()# 获取视频路径 def v_path():root Tk()root.withdraw()file_path (filedialog.askopenfilename(title选择视频文件, filetypes[(mp4, *.mp4), (All Files, *)]))return file_path# 将视频分解为帧和音轨 def split_frames(v_path):# exist_ok表示目录存在时不必报错, 替代os.mkdir()os.makedirs(images, exist_okTrue)os.makedirs(music, exist_okTrue)music AudioFileClip(v_path)music.write_audiofile(music/origin.wav)# 视频v1 cv2.VideoCapture()v1.open(v_path)global fps, frames, ifps v1.get(cv2.CAP_PROP_FPS)frames v1.get(cv2.CAP_PROP_FRAME_COUNT)for i in range(int(frames)):ret, frame v1.read()cv2.imwrite(images/%d.png % i, frame)return# 获取保存路径 def save_path():root Tk()root.withdraw()file_path (filedialog.asksaveasfilename(title保存视频文件, filetypes[(mp4, *.mp4), (All Files, *)]))return file_path# 方式1: 通过什么鸢大佬的代码将每帧图片转换为彩色字符图片, 生成图片只能看清人物轮廓比较模糊 def frames2text():os.makedirs(text, exist_okTrue)for n in range(int(frames)):IMG (images/%d.png % n)# 字符列表,可自定义文字种类和数量ascii_char list(1010)def get_char(r, g, b, alpha256):# alpha透明度if alpha 0:return length len(ascii_char)# 计算灰度gray int(0.2126 * r 0.7152 * g 0.0722 * b)unit (256.0 1) / length# 不同灰度对应不同字符return ascii_char[int(gray / unit)]im Image.open(IMG)# 宽度调整为原图1/6,由于字体宽度WIDTH int(im.width / 6)# 高度调整为原图1/15,由于字体宽度HEIGHT int(im.height / 15)# 黑色背景图片im_text Image.new(RGB, (im.width, im.height), (255, 255, 255))# Image.NEAREST(最近邻采样),选择输入图像的最近像素忽略其它输入像素.im im.resize((WIDTH, HEIGHT), Image.NEAREST)txt colors []for i in range(HEIGHT):for j in range(WIDTH):pixel im.getpixel((j, i))# 记录像素颜色信息colors.append((pixel[0], pixel[1], pixel[2]))if (len(pixel) 4):txt get_char(pixel[0], pixel[1], pixel[2], pixel[3])else:txt get_char(pixel[0], pixel[1], pixel[2])txt \ncolors.append((255, 255, 255))# 开始画图dr ImageDraw.Draw(im_text)# 获取默认字体font ImageFont.load_default()x y 0# 获取字体宽高font_w, font_h font.getsize(txt[1])# 调整比例font_h * 1.37# 为每个ascii码字符上色for i in range(len(txt)):# 对换行符特殊处理,不上色并且保证位置正确if (txt[i] \n):x font_hy -font_wdr.text([y, x], txt[i], colors[i])y font_w# 保存生成的每帧彩色字符图片save_path (text/%d % n)save_path save_path .pngim_text.save(save_path)# 删除 images目录# shutil.rmtree(images)# 方式2: 通过修改盗蓝大佬的代码生成高清版本彩色图片, 每张图片大小变为3*3倍 def img2clorfultxt(frame, K5):利用 聚类 将像素信息聚为3或5类颜色最深的一类用数字密集地表示阴影的一类用“*”表示明亮部分空白或者-横杠表示。---------------------------------frame需要传入的图片信息。可以是opencv的cv2.imread()得到的数组也可以是Pillow的Image.read()。K聚类数量推荐的K为3或5。根据经验3或5时可以较为优秀地处理很多图像了。若默认的K5无法很好地表现原图请修改为3进行尝试。若依然无法很好地表现原图请换图尝试。 -_-|| ---------------------------------聚类数目理论可以取大于等于3的任意整数。但水平有限无法自动判断当生成的字符画可以更好地表现原图细节时“黑暗”、“阴影”、”明亮“之间边界在哪。所以说由于无法有效利用更大的聚类数量那么便先简单地限制聚类数目为3和5。if type(frame) ! np.ndarray:frame np.array(frame)height, width, *_ frame.shape # 有时返回两个值有时三个值frame_gray cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)frame_array np.float32(frame_gray.reshape(-1))# 设置相关参数。criteria: 这是迭代终止准则。当满足这个准则时算法迭代停止criteria (cv2.TERM_CRITERIA_EPS cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)flags cv2.KMEANS_RANDOM_CENTERS# 得到labels(类别)、centroids(矩心)。# 如第一行6个像素labels[0,2,2,1,2,0],则意味着6个像素分别对应着 第1个矩心、第3个矩心、第3、2、3、1个矩心。compactness, labels, centroids cv2.kmeans(frame_array, K, None, criteria, 10, flags)centroids np.uint8(centroids)# labels的数个矩心以随机顺序排列所以需要简单处理矩心.centroids centroids.flatten()centroids_sorted sorted(centroids)# 获得不同centroids的明暗程度0最暗centroids_index np.array([centroids_sorted.index(value) for value in centroids])bright [abs((3 * i - 2 * K) / (3 * K)) for i in range(1, 1 K)]bright_bound bright.index(np.min(bright))shadow [abs((3 * i - K) / (3 * K)) for i in range(1, 1 K)]shadow_bound shadow.index(np.min(shadow))labels labels.flatten()# 将labels转变为实际的明暗程度列表0最暗。labels centroids_index[labels]# 列表解析每2*2个像素挑选出一个组成height*width*灰三维数组。labels_picked [labels[rows * width:(rows 1) * width:2] for rows in range(0, height, 2)]canvas np.zeros((3 * height, 3 * width, 3), np.uint8)canvas.fill(255) # 创建长宽为原图三倍的白色画布。# 因为 字体大小为0.45时每个数字占6*6个像素而白底画布为原图三倍# 所以 需要原图中每2*2个像素中挑取一个在白底画布中由6*6像素大小的数字表示这个像素信息。cv2.FONT_HERSHEY_PLAIN为字体y 8for rows in labels_picked:x 0for cols in rows:if cols shadow_bound:# cv2.putText各参数依次是图片添加的文字左上角坐标字体字体大小颜色字体粗细# (x,y)坐标颜色对应frame[((y // 3) - 1), ((x // 3) - 1)], 各个颜色值必须迭代强转成int组成的元组例如 (147, 132, 132)# 迭代转成元组的方法, tuple([int(c) for c in frame[((y // 3) - 1), ((x // 3) - 1)]]),# 不强制转换会报错 - Scalar value for argument color is not numericcv2.putText(canvas, str(random.randint(2, 9)),(x, y), cv2.FONT_HERSHEY_PLAIN, 0.45,tuple([int(c) for c in frame[((y // 3) - 1), ((x // 3) - 1)]]), 1)elif cols bright_bound:cv2.putText(canvas, *, (x, y),cv2.FONT_HERSHEY_PLAIN, 0.4, tuple([int(c) for c in frame[((y // 3) - 1), ((x // 3) - 1)]]),1)else:cv2.putText(canvas, -, (x, y),cv2.FONT_HERSHEY_PLAIN, 0.4, tuple([int(c) for c in frame[((y // 3) - 1), ((x // 3) - 1)]]),1)x 6y 6return canvas# 用于保存第n张字符图片 def save_nth_strframe(n):# 读取每张图片fp (images/%d.png % n)img cv2.imread(fp)# 生成彩色字符画图片并保存str_img img2clorfultxt(img)save_path (text/%d.png % n)cv2.imwrite(save_path, str_img)# 保存所有字符画图片: 方式1. 通过for循环将每帧图片转成字符画图片, 速度较慢可以通过多线程和多进程加速 def frames2hdtext():os.makedirs(text, exist_okTrue)for n in range(int(frames)):# 保存彩色字符图片到text路径save_nth_strframe(n)# 删除 images目录# shutil.rmtree(images)# 保存所有字符画图片: 方式2. 通过多进程多线程结合的方式加速 # 参考https://blog.csdn.net/qq_35869630/article/details/106026450 def trans_hdtext_thread(split_array):import concurrent.futureswith concurrent.futures.ThreadPoolExecutor(max_workers10) as executor:future_list {executor.submit(save_nth_strframe, i): i for i in split_array}# 传入 Future 列表在每个 Future 完成时产出结果此方法不阻塞。concurrent.futures.as_completed(future_list)# 保存所有字符画图片: 方式3. 通过多进程协程结合的方式加速 def trans_hdtext_coroutine(*params):创建协程spawn_list []for array in params:for n in array:spawn gevent.spawn(save_nth_strframe, n)spawn_list.append(spawn)# gevent.joinall 会阻塞当前流程并执行所有给定的 greenlet执行流程只会在所有 greenlet 执行完后才会继续向下走。 # https://blog.csdn.net/freeking101/article/details/53097420gevent.joinall(spawn_list)def trans_hdtext_process_pool():os.makedirs(text, exist_okTrue)from multiprocessing import Pool, cpu_countNUMBER_OF_PROCESSES cpu_count()pool Pool(NUMBER_OF_PROCESSES - 1)# 将0到frames的数组拆分成NUMBER_OF_PROCESSES-1份子数组, 启动NUMBER_OF_PROCESSES-1个进程frames_array np.arange(int(frames))# 多线程方式, 例如[1:9]的列表拆成三个子数组就变成了[ array([1,2,3]), array([4,5,6]), array([7,8,9]) ]# pool.map(trans_hdtext_thread, np.array_split(frames_array, NUMBER_OF_PROCESSES - 1))# 协程方式pool.map(trans_hdtext_coroutine, np.array_split(frames_array, NUMBER_OF_PROCESSES - 1))pool.close()pool.join()# 帧合成新视频 def images2video():img_array []# 按照第一张图片大小初始化img cv2.imread(text/0.png)sp img.shapeimg_width sp[1]img_height sp[0]for i in range(int(frames)):file_path text/%d % ifilename file_path .pngimg cv2.imread(filename)if img is None:print(filename 不存在)continueimg_array.append(img)# 合成视频, fourcc 指定编码器,fps 要保存的视频的帧率out cv2.VideoWriter(music/origin.mp4, cv2.VideoWriter_fourcc(*mp4v), fps, (img_width, img_height))for i in range(len(img_array)):out.write(img_array[i])out.release()# 删除 text目录# shutil.rmtree(text)# 合成视频和音轨 def merge_video_with_audio(save_path):# 原始视频origin_video music/origin.mp4audio music/origin.wavvideo_clip VideoFileClip(origin_video)audio_clip AudioFileClip(audio)# 输出到新视频video video_clip.set_audio(audio_clip)# audio_codecaac改变下声道编码,避免mac播放器播放时没有声音video.write_videofile(save_path, audio_codecaac)video_clip.close()audio_clip.close()if __name__ __main__:# 原始视频路径video_path v_path()# 保存路径save_video save_path()starttime datetime.datetime.now()split_frames(video_path)endtime datetime.datetime.now()print(split_frames: , starttime, endtime, (endtime - starttime).seconds)# 方式1: 通过什么鸢大佬的代码将每帧图片转换为彩色字符图片, 生成图片只能看清人物轮廓比较模糊# frames2text()# 方式2: 通过修改盗蓝大佬的代码生成高清版本彩色图片, 每张图片大小变为3*3倍, 通过for循环将每帧图片转成字符画图片,速度较慢 可以通过多线程加速# frames2hdtext()# 方式3: 通过多进程多线程方式加速生成高清图片starttime datetime.datetime.now()trans_hdtext_process_pool()endtime datetime.datetime.now()print(trans_hdtext_process_pool: , starttime, endtime, (endtime - starttime).seconds)starttime datetime.datetime.now()images2video()endtime datetime.datetime.now()print(images2video: , starttime, endtime, (endtime - starttime).seconds)merge_video_with_audio(save_video)# # 删除music目录# shutil.rmtree(music) 测试代码可用于单张图片转换成字符画图片 test.py代码如下 from PIL import Image, ImageFont, ImageDrawimport cv2 import random import numpy as np import pytest# 盗蓝大佬的高清图像生成 https://zhuanlan.zhihu.com/p/56033037 # OpenCV-Python教程:55.OpenCV里的K-Means聚类 https://www.jianshu.com/p/b24086aab3fc # KMeans聚类算法详解 https://zhuanlan.zhihu.com/p/184686598 def img2strimg(frame, K5):利用 聚类 将像素信息聚为3或5类颜色最深的一类用数字密集地表示阴影的一类用“-”横杠表示明亮部分空白表示。---------------------------------frame需要传入的图片信息。可以是opencv的cv2.imread()得到的数组也可以是Pillow的Image.read()。K聚类数量推荐的K为3或5。根据经验3或5时可以较为优秀地处理很多图像了。若默认的K5无法很好地表现原图请修改为3进行尝试。若依然无法很好地表现原图请换图尝试。 -_-|| ---------------------------------聚类数目理论可以取大于等于3的任意整数。但水平有限无法自动判断当生成的字符画可以更好地表现原图细节时“黑暗”、“阴影”、”明亮“之间边界在哪。所以说由于无法有效利用更大的聚类数量那么便先简单地限制聚类数目为3和5。if type(frame) ! np.ndarray:frame np.array(frame)height, width, *_ frame.shape # 有时返回两个值有时三个值frame_gray cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)frame_array np.float32(frame_gray.reshape(-1))# 设置相关参数。criteria (cv2.TERM_CRITERIA_EPS cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)flags cv2.KMEANS_RANDOM_CENTERS# 得到labels(类别)、centroids(矩心)。# 如第一行6个像素labels[0,2,2,1,2,0],则意味着6个像素分别对应着 第1个矩心、第3个矩心、第3、2、3、1个矩心。compactness, labels, centroids cv2.kmeans(frame_array, K, None, criteria, 10, flags)centroids np.uint8(centroids)# labels的数个矩心以随机顺序排列所以需要简单处理矩心.centroids centroids.flatten()centroids_sorted sorted(centroids)# 获得不同centroids的明暗程度0最暗centroids_index np.array([centroids_sorted.index(value) for value in centroids])bright [abs((3 * i - 2 * K) / (3 * K)) for i in range(1, 1 K)]bright_bound bright.index(np.min(bright))shadow [abs((3 * i - K) / (3 * K)) for i in range(1, 1 K)]shadow_bound shadow.index(np.min(shadow))labels labels.flatten()# 将labels转变为实际的明暗程度列表0最暗。labels centroids_index[labels]# 列表解析每2*2个像素挑选出一个组成height*width*灰数组。labels_picked [labels[rows * width:(rows 1) * width:2] for rows in range(0, height, 2)]canvas np.zeros((3 * height, 3 * width, 3), np.uint8)canvas.fill(255) # 创建长宽为原图三倍的白色画布。# 因为 字体大小为0.45时每个数字占6*6个像素而白底画布为原图三倍# 所以 需要原图中每2*2个像素中挑取一个在白底画布中由6*6像素大小的数字表示这个像素信息。y 8for rows in labels_picked:x 0for cols in rows:if cols shadow_bound:cv2.putText(canvas, str(random.randint(2, 9)),(x, y), cv2.FONT_HERSHEY_PLAIN, 0.45, 1)elif cols bright_bound:cv2.putText(canvas, -, (x, y),cv2.FONT_HERSHEY_PLAIN, 0.4, 0, 1)x 6y 6return canvas# 根据盗蓝大佬的代码修改生成彩色高清字符画图片 def img2clorfultxt(frame, K5):利用 聚类 将像素信息聚为3或5类颜色最深的一类用数字密集地表示阴影的一类用“*”表示明亮部分空白或者-横杠表示。---------------------------------frame需要传入的图片信息。可以是opencv的cv2.imread()得到的数组也可以是Pillow的Image.read()。K聚类数量推荐的K为3或5。根据经验3或5时可以较为优秀地处理很多图像了。若默认的K5无法很好地表现原图请修改为3进行尝试。若依然无法很好地表现原图请换图尝试。 -_-|| ---------------------------------聚类数目理论可以取大于等于3的任意整数。但水平有限无法自动判断当生成的字符画可以更好地表现原图细节时“黑暗”、“阴影”、”明亮“之间边界在哪。所以说由于无法有效利用更大的聚类数量那么便先简单地限制聚类数目为3和5。if type(frame) ! np.ndarray:frame np.array(frame)height, width, *_ frame.shape # 有时返回两个值有时三个值frame_gray cv2.cvtColor(frame, cv2.COLOR_BGR2GRAY)frame_array np.float32(frame_gray.reshape(-1))# 设置相关参数。criteria: 这是迭代终止准则。当满足这个准则时算法迭代停止criteria (cv2.TERM_CRITERIA_EPS cv2.TERM_CRITERIA_MAX_ITER, 10, 1.0)flags cv2.KMEANS_RANDOM_CENTERS# 得到labels(类别)、centroids(矩心)。# 如第一行6个像素labels[0,2,2,1,2,0],则意味着6个像素分别对应着 第1个矩心、第3个矩心、第3、2、3、1个矩心。compactness, labels, centroids cv2.kmeans(frame_array, K, None, criteria, 10, flags)centroids np.uint8(centroids)# labels的数个矩心以随机顺序排列所以需要简单处理矩心.centroids centroids.flatten()centroids_sorted sorted(centroids)# 获得不同centroids的明暗程度0最暗centroids_index np.array([centroids_sorted.index(value) for value in centroids])bright [abs((3 * i - 2 * K) / (3 * K)) for i in range(1, 1 K)]bright_bound bright.index(np.min(bright))shadow [abs((3 * i - K) / (3 * K)) for i in range(1, 1 K)]shadow_bound shadow.index(np.min(shadow))labels labels.flatten()# 将labels转变为实际的明暗程度列表0最暗。labels centroids_index[labels]# 列表解析每2*2个像素挑选出一个组成height*width*灰三维数组。labels_picked [labels[rows * width:(rows 1) * width:2] for rows in range(0, height, 2)]canvas np.zeros((3 * height, 3 * width, 3), np.uint8)canvas.fill(255) # 创建长宽为原图三倍的白色画布。# 因为 字体大小为0.45时每个数字占6*6个像素而白底画布为原图三倍# 所以 需要原图中每2*2个像素中挑取一个在白底画布中由6*6像素大小的数字表示这个像素信息。cv2.FONT_HERSHEY_PLAIN为字体y 8for rows in labels_picked:x 0for cols in rows:if cols shadow_bound:# cv2.putText各参数依次是图片添加的文字左上角坐标字体字体大小颜色字体粗细# (x,y)坐标颜色对应frame[((y // 3) - 1), ((x // 3) - 1)], 各个颜色值必须迭代强转成int组成的元组例如 (147, 132, 132)# 迭代转成元组的方法, tuple([int(c) for c in frame[((y // 3) - 1), ((x // 3) - 1)]]),# 不强制转换会报错 - Scalar value for argument color is not numericcv2.putText(canvas, str(random.randint(2, 9)),(x, y), cv2.FONT_HERSHEY_PLAIN, 0.45,tuple([int(c) for c in frame[((y // 3) - 1), ((x // 3) - 1)]]), 1)elif cols bright_bound:cv2.putText(canvas, *, (x, y),cv2.FONT_HERSHEY_PLAIN, 0.4, tuple([int(c) for c in frame[((y // 3) - 1), ((x // 3) - 1)]]),1)else:cv2.putText(canvas, -, (x, y),cv2.FONT_HERSHEY_PLAIN, 0.4, tuple([int(c) for c in frame[((y // 3) - 1), ((x // 3) - 1)]]),1)x 6y 6return canvas# 什么鸢大佬的根据灰度重新画字符画图片, 该方法只能显示轮廓和颜色,人物比较模糊 # https://www.bilibili.com/video/BV1sQ4y1Y7P2/ def frame2text(png, save_path):IMG png# 字符列表,可自定义文字种类和数量ascii_char list(1010)def get_char(r, g, b, alpha256):# alpha透明度if alpha 0:return length len(ascii_char)# 计算灰度gray int(0.2126 * r 0.7152 * g 0.0722 * b)unit (256.0 1) / length# 不同灰度对应不同字符return ascii_char[int(gray / unit)]im Image.open(IMG)# 宽度调整为原图1/6,由于字体宽度WIDTH int(im.width / 6)# 高度调整为原图1/15,由于字体宽度HEIGHT int(im.height / 15)# 黑色背景图片im_text Image.new(RGB, (im.width, im.height), (255, 255, 255))# Image.NEAREST(最近邻采样),选择输入图像的最近像素忽略其它输入像素.im im.resize((WIDTH, HEIGHT), Image.NEAREST)txt colors []for i in range(HEIGHT):for j in range(WIDTH):pixel im.getpixel((j, i))# 记录像素颜色信息colors.append((pixel[0], pixel[1], pixel[2]))if (len(pixel) 4):txt get_char(pixel[0], pixel[1], pixel[2], pixel[3])else:txt get_char(pixel[0], pixel[1], pixel[2])txt \ncolors.append((255, 255, 255))# 开始画图dr ImageDraw.Draw(im_text)# 获取默认字体font ImageFont.load_default()x y 0# 获取字体宽高font_w, font_h font.getsize(txt[1])# 调整比例font_h * 1.37# 为每个ascii码字符上色for i in range(len(txt)):# 对换行符特殊处理,不上色并且保证位置正确if (txt[i] \n):x font_hy -font_wdr.text([y, x], txt[i], colors[i])y font_w# 保存生成的每帧彩色字符图im_text.save(save_path)# 测试代码部分def test_img2strimg():fp1 test/59.pngfp2 test/97.pngimg cv2.imread(fp1)img2 cv2.imread(fp2)# 若字符画结果不好可以尝试更改K为3。若依然无法很好地表现原图请换图尝试。 -_-||str_img1 img2strimg(img)str_img2 img2strimg(img2)cv2.imwrite(test/59-img2strimg.png, str_img1)cv2.imwrite(test/97-img2strimg.png, str_img2)def test_img2clorfultxt():fp1 test/59.pngfp2 test/97.pngimg cv2.imread(fp1)img2 cv2.imread(fp2)str_img img2clorfultxt(img)str_img2 img2clorfultxt(img2)cv2.imwrite(test/59-img2clorfultxt.png, str_img)cv2.imwrite(test/97-img2clorfultxt.png, str_img2)def test_frame2text():png1 test/59.pngpng2 test/97.pngsave_path1 test/59-frame2text.pngsave_path2 test/97-frame2text.pngframe2text(png1, save_path1)frame2text(png2, save_path2)if __name__ __main__:print(np.array_split(1417, 3))项目地址: https://github.com/keginx/logorhythums 项目结构 . ├── README.md ├── images 视频每一帧转换成的图片 │ ├── 0.png │ └── 999.png ├── music 原始视频拆分成mp4视频和声音 │ ├── origin.mp4 │ └── origin.wav ├── requirements.txt 依赖 ├── test 各种方法实现的字符画图片转换效果 │ ├── 230.png │ ├── 59-frame2text.png │ ├── 59-img2clorfultxt.png │ ├── 59-img2strimg.png │ ├── 59.png │ ├── 97-frame2text.png │ ├── 97-img2clorfultxt.png │ ├── 97-img2strimg.png │ └── 97.png ├── test.py 测试各种方法转字符画图片 ├── test.txt ├── text 转换后的每帧字符画图片 │ ├── 0.png │ └── 999.png └── video.py 实现字符画视频转换其他 遇到的一些问题 弹窗功能库tkinter调用失败import _tkinter # If this fails your Python may not be configured for Tk、ModuleNotF 解决办法: 执行brew install python-tk3.10 安装mac MoviePy 合成视频没有声音 解决办法: 在调用write_videofile函数时加上参数audio_codec“aac”改变下声道编码即可Scalar value for argument ‘color‘ is not numeric错误 解决方法: 用迭代的方式 转成需要的类型 color tuple ([int(x) for x in color]) #设置为整数一些优化方向 Sklearnex加速KMeans计算 sklearnex是一个sklearn加速包大约可以提升几倍到千倍的速度。它是针对Intel平台的只对Intel CPU有效且CPU性能越好加速效果越显著使用GPU 有很多GPU版本的KMeans算法包大多数基于cuda或者torch、tensorflow的。代码中用的字符是1234567890,可以尝试用其他字符代替 一些建议 被转换视频建议选择一些小的视频不然会很耗时间 参考 FFmpeg的安装教程Python小程序:视频转彩色字符动画弹窗功能库tkinter调用失败import _tkinter # If this fails your Python may not be configured for Tk、ModuleNotFmac MoviePy 合成视频没有声音python 多进程编程 之 加速kmeans算法Scikit-Learn学习笔记——k-means聚类图像识别、色彩压缩python KMeans聚类加速计算一些简单技巧和坑总结如何将Numpy加速700倍用 CuPy 呀Python 多线程多进程简单使用教程如何在多进程开多线程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/web/84949.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

检察院前期网站建设mx动漫wordpress主题

指定检索策略并检索 确定检索词 检索课题:查找与“新型冠状病毒疫苗研制进展”有关的学术论文 检索式(2019-nCoV or 2019新型冠状病毒 or nCov-2019 or SARS-CoV-2 or COVID-19) and (疫苗 or 预防针 or 防疫针 or vaccin or vaccine) 扩展检索词的方式 同义词…

网站开启伪静态wordpress 最强大主题

选择题 题目: 大数据是指()及以上级别的数据量。 题目: 大数据的所谓6个V的特征不包括() 题目: 目前所获取的总数据量的80%以上都是()数据 题目: 大数据的…

网站做水印有没有影响吗东莞汽车网站建设

1、Spring实现了工厂模式的工厂类&#xff0c;这个类名为BeanFactory实际上是一个接口&#xff0c;在程序中通常BeanFactory的子类ApplicationContext。Spring相当于一个大的工厂类&#xff0c;在其配置文件中通过<bean>元素配置用于创建实例对象的类名和实例对象的属性。…

dz网站如何搬家新建的网站百度搜不到

大家好&#xff0c;我是 Just&#xff0c;这里是「设计师工作日常」&#xff0c;今天分享的是用css 实现一个动态的太极八卦图。 《有趣的css》系列最新实例通过公众号「设计师工作日常」发布。 目录 整体效果核心代码html 代码css 部分代码 完整代码如下html 页面css 样式页面…

公司网站建设需要显示什么软件做淘宝网站用什么软件

在当今建筑领域&#xff0c;智慧工地正迅速崭露头角。这个概念不仅代表了技术进步&#xff0c;还预示着建筑行业的数字化和智能化未来。从多个角度来看&#xff0c;智慧工地都具有深远的意义&#xff0c;它正在改变着我们建筑的方式和未来。 提高工程效率 智慧工地利用物联网&…

网站开发需要什么步骤北京市网站制作

1、图的概念图(Diagram) 是一组元素的图形表示&#xff0c;大多数情况下&#xff0c;把图画成顶点&#xff08;代表事物&#xff09;和弧(表示关系)的连通图。2、UML中图的分类UML2.0中的图主要有&#xff1a;类图、对象图、用例图、序列图、通信图、状态图、活动图、构件图、部…

flash网站设计教程wordpress文章图

1. 基本概念Math.imul()方法用于计算两个32位整数的乘积&#xff0c;它的结果也是32位的整数。JavaScript的Number类型同时包含了整数和浮点数&#xff0c;它没有专门的整型和浮点型。因此&#xff0c;Math.imul()方法能提供类似C语言的整数相乘的功能。我们将Math.imul()方法的…

百度为什么打不开网页无法访问青岛seo外包服务

gwt的mvp模式GWT Model-View-Presenter是用于大规模应用程序开发的设计模式。 它源于MVC&#xff0c;它在视图和逻辑之间进行划分&#xff0c;并有助于创建结构良好&#xff0c;易于测试的代码。 为了帮助像我这样的懒惰开发人员&#xff0c;我研究了如何减少使用声明式UI时要编…

网站的惩罚期要怎么做运营管理培训

我是南城余&#xff01;阿里云开发者平台专家博士证书获得者&#xff01; 欢迎关注我的博客&#xff01;一同成长&#xff01; 一名从事运维开发的worker&#xff0c;记录分享学习。 专注于AI&#xff0c;运维开发&#xff0c;windows Linux 系统领域的分享&#xff01; 本…

网站域名实名认证查询WordPress获取评论内容

在SQL中的 CASE 语句是一种条件表达式&#xff0c;它允许你在查询中根据条件逻辑返回不同的值。CASE 语句通常有两种形式&#xff1a;简单 CASE 表达式和搜索 CASE 表达式。在我之前给出的优化SQL查询的例子中&#xff0c;使用了简单 CASE 表达式。 这里是简单 CASE 表达式的基…

免费网站一级域名注册网站开发工程师的经验

1、导入报错 Undefined symbols: linker command failed with exit code 1 (use -v to see invocation) 直接添加如下图内容即可

jsp电商购物网站开发成都幕墙设计公司

逻辑与——&——都为true才为true&#xff0c;有一false就为false&#xff0c;符号两边都看 短路与——&&——都为true才为true&#xff0c;有一false就为false&#xff0c;前面有false就略后面 逻辑或——|——有一true就为true&#xff0c;符合两边都看 短路或—…

网站栏目分类医院网站建设方案需要多少钱

1企业的内部环境不包括&#xff08;&#xff09; A企业的生产能力 B财务能力 C社会文化环境 D企业在公众中的形象 错误 正确答案&#xff1a;左边查询 学生答案&#xff1a;A 2企业营销战略规划不包括哪一步骤&#xff08;&#xff09; A确定企业的任务与目标 B选择合宜的市场机…

网站阵地建设个人电脑 wordpress

文章底部有个人公众号&#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享&#xff1f; 踩过的坑没必要让别人在再踩&#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官&#xff1a;v-if和v-for的优先级是什…

国家查企业的网站苏州网络推广去苏州聚尚网络

Navicat转载于:https://www.cnblogs.com/jizl/p/4995959.html

网站调用数据库郴州市官网入口

推特&#xff08;Twitter&#xff09;数据恢复&#xff1a;如何找回丢失的内容 随着社交媒体的普及&#xff0c;越来越多的人开始使用推特&#xff08;Twitter&#xff09;来分享生活点滴、发表观点和获取信息。然而&#xff0c;有时候我们会不小心删除了重要的推文&#xff0…

网站备案注销查询饮料网站建设

当提及“品质卓越&#xff0c;口感非凡”的啤酒时&#xff0c;FENDI CLUB精酿啤酒无疑是一个值得一试的选择。这款啤酒以其独特的酿造工艺和优质的原料&#xff0c;为消费者带来了与众不同的味觉享受。 一、独特的酿造工艺 FENDI CLUB精酿啤酒在酿造过程中&#xff0c;严格遵循…

吕梁营销型网站建设费用iis部署网站 红叉

node+mysql实现账户登录 注意效果图项目插件代码参数说明短信验证模块邮箱验证模块注册方式登录方式密码重置前端页面部分登录页面账户登录页面(login.html)短信验证登录页面(smsLogin.html)邮箱登录页面(emailLogin.html)注册部分页面短信验证注册页面(register.html)邮…

网站排名优化公司哪家好品牌网站建设优化公司

好长一段时间没有关注vue脚手架了&#xff0c;昨天因为需要个后台模板&#xff0c;用脚手架 搞了一下&#xff0c;竟然发现指令不能用了&#xff0c;看官方文档已经升级3.0&#xff0c;也是试的玩了一下&#xff0c; 大致写写怎么玩的&#xff01;12341.先全局安装vue-cli3.0 …

做网站空间和服务器的电脑上怎么运行wordpress

欢迎来到《小5讲堂》 大家好&#xff0c;我是全栈小5。 这是是《前端》序列文章&#xff0c;每篇文章将以博主理解的角度展开讲解&#xff0c; 特别是针对知识点的概念进行叙说&#xff0c;大部分文章将会对这些概念进行实际例子验证&#xff0c;以此达到加深对知识点的理解和掌…