ToB企服应用市场:ToB评测及商务社交产业平台

标题: python云盘算有哪些岗位,华为python教程下载 [打印本页]

作者: 勿忘初心做自己    时间: 2024-6-14 22:00
标题: python云盘算有哪些岗位,华为python教程下载
大家好,小编来为大家解答以下问题,华为python语言通用编程规范,python云盘算有哪些岗位,本日让我们一起来看看吧!


Source code download: 本文相关源码
   
     文章目次

   
   
  
  前言

  近日,《本草纲目》毽子操的视频刷屏网络。公司里更是多了很多刘畊宏女孩,在520到来之际特意奉献这篇文章给大家python自学能乐成吗。假如故意仪的女孩这篇文章可以帮助你哦。
     歌词:抬腿!拍腿!,侧边的肥肉咔咔掉,人鱼线马甲线我都要!刘畊宏的男孩女孩看过来。
    让我们来用Python定制出心仪的“本草纲目女孩”,敲出魔性的代码舞蹈,520,准备美意仪女孩的舞蹈视频,把这份别出心裁的礼品给TA❤️。
  一、华为云ModelArts-Notebook先容

  1.华为云ModelArts-Notebook

  ModelArts集成了基于开源的Jupyter Notebook和JupyterLab,可为您提供在线的交互式开发调试工具。您无需关注安装配置,在ModelArts管理控制台直接使用Notebook,编写和调测模型训练代码,然后基于该代码进行模型的训练。
  此中,ModelArts还提供了华为自研的分布式训练加速框架MoXing,您可以在Notebook中使用MoXing编写训练脚本,让您代码编写更加高效、代码更加简洁。
  1.1 Jupyter Notebook是什么

  Jupyter Notebook是一个可以在浏览器中使用的交互式的盘算应用步伐,该应用步伐的所有可见的内容,以条记本文档表示,包罗盘算的输入和输出、表明文本、数学、图像和对象的富媒体等表示。因此,Jupyter Notebook可以实现将代码、笔墨完美结合起来,非常得当从事机器学习、数据分析等数据科学工作的职员。
  Jupyter Notebook相关文档:Project Jupyter Documentation — Jupyter Documentation 4.1.1 alpha documentation
  1.2 JupyterLab是什么

  JupyterLab是一个交互式的开发环境,是Jupyter Notebook的下一代产品,可以使用它编写Notebook、操纵终端、编辑MarkDown文本、打开交互模式、查看csv文件及图片等功能。
  JupyterLab相关文档:JupyterLab Documentation — JupyterLab 4.1.5 documentation
  1.3 什么是Moxing

  MoXing是华为云ModelArts团队自研的分布式训练加速框架,它构建于开源的深度学习引擎TensorFlow、MXNet、PyTorch、Keras之上。相对于TensorFlow和MXNet原生API而言,MoXing API让模型代码的编写更加简朴,答应用户只需要关心数据输入(input_fn)和模型构建(model_fn)的代码,即可实现任意模型在多GPU和分布式下的高性能运行,低落了TensorFlow和MXNet的使用门槛。别的,MoXing-TensorFlow还将支持自动超参选择和自动模型结构搜索,用户无需关心超参和模型结构,做到模型全自动学习。
  Moxing相关文档:ModelArts-Lab/docs/moxing_api_doc at master · huaweicloud/ModelArts-Lab · GitHub
  2.Python-Opencv

  Python由荷兰数学和盘算机科学研究学会的吉多·范罗苏姆于1990年代初设计,作为一门叫做ABC语言的替代品。Python提供了高效的高级数据结构,还能简朴有用地面向对象编程。Python语法和动态类型,以及表明型语言的本质,使它成为多数平台上写脚本和快速开发应用的编程语言,随着版本的不断更新和语言新功能的添加,逐渐被用于独立的、大型项目的开发。
  Python表明器易于扩展,可以使用C语言或C++(大概其他可以通过C调用的语言)扩展新的功能和数据类型。Python也可用于可定制化软件中的扩展步伐语言。Python丰富的尺度库,提供了实用于各个主要体系平台的源码或机器码。
  OpenCV用C++语言编写,它具有C++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要倾向于实时视觉应用,并在可用时使用MMX和SSE指令,如今也提供对于C#、Ch、Ruby,GO的支持。
  opencv-python的github网址:opencv-python · PyPI
  OpenCV官网:OpenCV - Open Computer Vision Library
  二、本地案例实现Python定制我的《本草纲目女孩》

  1.案例实现流程

  众所周知,视频是由一帧帧图像构成,Opencv处理惩罚视频图像信息的原理就是将视频转为一帧帧图像,处理惩罚完图像后再转换为视频。
  用Python实现案例流程如下:
  

  2.案例环境摆设

  2.1 本机环境

  
  2.2 安装对应的anaconda包

  anaconda这是一个非常常用的python包集成管理工具,此中预安装了很多python库,使得我们不需要去手动安装各种的第三方库,我们知道本身取手动安装的过程中,很轻易就会遇到一些报错,办理起来也非常的贫困。
  anaconda官网:Free Download | Anaconda

下载完软件包一路点击安装就行了,安装乐成后会出现如下界面。

查看是否安装乐成下令:conda --version

  2.3 安装opencv-python

  进入anaconda控制台输入如下下令:
  1. pip install opencv-python
复制代码

  3.案例实现代码

  本案例的实现过程主要分为以下几步:
  1. 1. 导入数据
  2. 2. 导入库函数
  3. 3. 将视频转化为图像帧
  4. 4. 对图片帧进行ASCII码的转换
  5. 5. 将转换好的图片帧合成视频
复制代码
3.1 导入数据

  视频下载地址:https://cnnorth4-modelhub-datasets-obsfs-sfnua.obs.cn-north-4.myhuaweicloud.com/content/35d24c0e-f337-442b-935f-ef8123062d3e/QzNm9F/dataset/test_demo0510.mp4

  3.2 导入库函数

  1. #导入Python库
  2. import cv2
  3. from PIL import Image,ImageFont,ImageDraw
  4. import os
  5. from cv2 import VideoWriter, VideoWriter_fourcc, imread, resize
复制代码
3.3 将视频转化为图像帧

  1. #将视频转换为图片存入目标文件夹
  2. def video_to_pic(vp):
  3.     number = 0
  4.    
  5.     # 判断载入的视频是否可以打开
  6.     if vp.isOpened():
  7.         
  8.         #r:布尔型 (True 或者False),代表有没有读取到图片,frame:表示截取到的一帧的图片的数据,是个三维数组
  9.         r,frame = vp.read()
  10.         
  11.         #判断文件夹是否存在,不存在的话则新建文件夹
  12.         if not os.path.exists('cache_pic'):
  13.             os.mkdir('cache_pic')
  14.         os.chdir('cache_pic')
  15.         
  16.     else:
  17.         r = False
  18.         
  19.     #遍历视频,并将每一帧图片写入文件夹
  20.     while r:
  21.         number += 1
  22.         cv2.imwrite(str(number)+'.jpg',frame)
  23.         r,frame = vp.read()
  24.         
  25.     print('\n由视频一共生成了{}张图片!'.format(number))
  26.    
  27.     # 修改当前工作目录至主目录
  28.     os.chdir("..")
  29.     return number
复制代码
3.4 对图片帧进行ASCII码的转换

  1. #将图片进行批量化处理
  2. def star_to_char(number, save_pic_path):
  3.    
  4.     #判断文件夹是否存在,不存在的话则新建文件夹
  5.     if not os.path.exists('cache_char'):
  6.         os.mkdir('cache_char')
  7.     # 生成目标图片文件的路径列表
  8.     img_path_list = [save_pic_path + r'/{}.jpg'.format(i) for i in range(1, number + 1)]
  9.     task = 0
  10.     for image_path in img_path_list:
  11.         
  12.         # 获取图片的分辨率
  13.         img_width, img_height = Image.open(image_path).size
  14.         task += 1
  15.         #处理图片,并显示处理进程
  16.         img_to_char(image_path, img_width, img_height, task)
  17.         
  18.         print('{}/{} is processed.'.format(task, number))
  19.         
  20.     print('=======================')
  21.     print('All pictures were processed!')
  22.     print('=======================')
  23.     return 0
  24. # 将图片转换为灰度图像后进行ascii_char中的ASCII值输出
  25. # 函数输入像素RGBA值,输出对应的字符码。其原理是将字符均匀地分布在整个灰度范围内,像素灰度值落在哪个区间就对应哪个字符码。
  26. def get_char(r, g, b, alpha=256):
  27.    
  28.     #ascii_char就是字符列表,用来将不同灰度的像素进行不同字符体替换的参照。
  29.     ascii_char = list("#RMNHQODBWGPZ*@$C&98?32I1>!:-;. ")
  30.    
  31.     #alpha在为0的时候便是完全透明的图片,所以返回空
  32.     if alpha == 0:
  33.         return ''
  34.    
  35.     length = len(ascii_char)
  36.    
  37.     #转为灰度图
  38.     #RGBA是代表Red(红色)、Green(绿色)、Blue(蓝色)和Alpha的色彩空间,Alpha通道一般用作不透明度参数
  39.     #如果一个像素的alpha通道数值为0%,那它就是完全透明的,而数值为100%则意味着一个完全不透明的像素
  40.    
  41.     gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
  42.     # unit = (256.0 + 1) / len(ascii_char)
  43.     unit = 256 / len(ascii_char)
  44.     return ascii_char[int(gray / unit)]
  45. def img_to_char(image_path, raw_width, raw_height, task):
  46.     width = int(raw_width / 6)
  47.     height = int(raw_height / 15)
  48.     # 以RGB模式打开
  49.     im = Image.open(image_path).convert('RGB')
  50.     im = im.resize((width, height), Image.NEAREST)
  51.     txt = ''
  52.     color = []
  53.    
  54.     #遍历图片的每个像素
  55.     for i in range(height):
  56.         for j in range(width):
  57.             pixel = im.getpixel((j, i))
  58.             # 将颜色加入进行索引
  59.             color.append((pixel[0], pixel[1], pixel[2]))
  60.             if len(pixel) == 4:
  61.                 txt += get_char(pixel[0], pixel[1], pixel[2], pixel[3])
  62.             else:
  63.                 txt += get_char(pixel[0], pixel[1], pixel[2])
  64.         txt += '\n'
  65.         color.append((255, 255, 255))
  66.     im_txt = Image.new("RGB", (raw_width, raw_height), (255, 255, 255))
  67.     dr = ImageDraw.Draw(im_txt)
  68.     font = ImageFont.load_default().font
  69.     x, y = 0, 0
  70.     font_w, font_h = font.getsize(txt[1])
  71.     font_h *= 1.37  # 调整字体大小
  72.     for i in range(len(txt)):
  73.         if (txt[i] == '\n'):
  74.             x += font_h
  75.             y = -font_w
  76.         dr.text((y, x), txt[i], fill=color[i])
  77.         y += font_w
  78.         
  79.     #存储处理后的图片至文件夹
  80.     os.chdir('cache_char')
  81.     im_txt.save(str(task) + '.jpg')
  82.     #直接进入新创建的文件夹将生成的图片直接存入文件夹中
  83.     os.chdir("..")
  84.     return 0
复制代码
3.5 将转换好的图片帧合成视频

  1. # 进度条显示
  2. def process_bar(percent, start_str='', end_str='', total_length=0):
  3.     bar = ''.join("■ " * int(percent * total_length)) + ''
  4.     bar = '\r' + start_str + bar.ljust(total_length) + ' {:0>4.1f}%|'.format(percent * 100) + end_str
  5.     print(bar, end='', flush=True)
  6. #图片帧合成视频
  7. def jpg_to_video(char_image_path, FPS):
  8.    
  9.     # 设置视频编码器,这里使用MP42编码器
  10.     video_fourcc = VideoWriter_fourcc(*"MP42")
  11.     # 生成目标字符图片文件的路径列表
  12.     char_img_path_list = [char_image_path + r'/{}.jpg'.format(i) for i in range(1, number + 1)]
  13.     # 获取图片的分辨率
  14.     char_img_test = Image.open(char_img_path_list[1]).size
  15.     if not os.path.exists('video'):
  16.         os.mkdir('video')
  17.     video_writter = VideoWriter('video/output.avi', video_fourcc, FPS, char_img_test)
  18.     sum = len(char_img_path_list)
  19.     count = 0
  20.     for image_path in char_img_path_list:
  21.         img = cv2.imread(image_path)
  22.         video_writter.write(img)
  23.         end_str = '100%'
  24.         count = count + 1
  25.         process_bar(count / sum, start_str='', end_str=end_str, total_length=15)
  26.     video_writter.release()
  27.     print('\n')
  28.     print('=======================')
  29.     print('The video is finished!')
  30.     print('=======================')
复制代码
3.6 主函数

  1. if __name__ == "__main__":
  2.     #初始视频路径
  3.     video_path = 'test_demo0510.mp4'
  4.     #原始视频转为图片的图片保存路径
  5.     save_pic_path = 'cache_pic'
  6.     #图片经处理后的图片保存路径
  7.     save_charpic_path = 'cache_char'
  8.     # 读取视频
  9.     vp = cv2.VideoCapture(video_path)
  10.     # 将视频转换为图片 并进行计数,返回总共生成了多少张图片
  11.     number = video_to_pic(vp)
  12.     # 计算视频帧数
  13.     FPS = vp.get(cv2.CAP_PROP_FPS)
  14.     # 将图像进行字符串处理后
  15.     star_to_char(number, save_pic_path)
  16.     vp.release()
  17.     # 将图片合成为视频
  18.     jpg_to_video(save_charpic_path, FPS)
复制代码
3.7 运行结果

  运行后一共天生了382张图片,和视频文件,保存在如下文件夹下。

  4.案例播放代码

  1. import cv2
  2. from IPython.display import clear_output, Image, display
  3. def show_video(video_path, show_text):
  4.     video = cv2.VideoCapture(video_path)
  5.     while True:
  6.         try:
  7.             clear_output(wait=True)
  8.             # 读取视频
  9.             ret, frame = video.read()
  10.             if not ret:
  11.                 break
  12.             height, width, _ = frame.shape
  13.             cv2.putText(frame, show_text, (0, 100), cv2.FONT_HERSHEY_TRIPLEX, 3.65, (255, 0, 0), 2)
  14.             frame = cv2.resize(frame, (int(width / 2), int(height / 2)))
  15.             _, ret = cv2.imencode('.jpg', frame)
  16.             
  17.             display(Image(data=ret))
  18.             
  19.         except KeyboardInterrupt:
  20.             video.release()
  21.             
  22. #视频循环播放
  23. i=1
  24. while i>0:
  25.     show_video('video/output.avi',str(i))
  26.     i=i+1
复制代码

  三、华为云AI实现Python定制我的《本草纲目女孩》

  1.基础配置

  "本草纲目"健身操字符串视频操纵实例的案例页面如下:https://developer.huaweicloud.com/develop/aigallery/Notebook/detail?id=c81526e5-cc88-497f-8a21-41a5632e014e
  

  点击Run in ModelArts,进入JupyterLab页面。
  

  配置当前运行环境,切换规格,并选择免费的就好了。

  2.导入数据

  选择下方代码,点击运行。

  运行完成后如下:

  3.安装相关依赖

  选择下方代码,点击运行安装opencv包
  1. pip install opencv_python
复制代码

  4.导入库函数

  1. #导入Python库
  2. import cv2
  3. from PIL import Image,ImageFont,ImageDraw
  4. import os
  5. from cv2 import VideoWriter, VideoWriter_fourcc, imread, resize
复制代码

  5.将视频转化为图像帧

  1. #将视频转换为图片存入目标文件夹
  2. def video_to_pic(vp):
  3.     number = 0
  4.    
  5.     # 判断载入的视频是否可以打开
  6.     if vp.isOpened():
  7.         
  8.         #r:布尔型 (True 或者False),代表有没有读取到图片,frame:表示截取到的一帧的图片的数据,是个三维数组
  9.         r,frame = vp.read()
  10.         
  11.         #判断文件夹是否存在,不存在的话则新建文件夹
  12.         if not os.path.exists('cache_pic'):
  13.             os.mkdir('cache_pic')
  14.         os.chdir('cache_pic')
  15.         
  16.     else:
  17.         r = False
  18.         
  19.     #遍历视频,并将每一帧图片写入文件夹
  20.     while r:
  21.         number += 1
  22.         cv2.imwrite(str(number)+'.jpg',frame)
  23.         r,frame = vp.read()
  24.         
  25.     print('\n由视频一共生成了{}张图片!'.format(number))
  26.    
  27.     # 修改当前工作目录至主目录
  28.     os.chdir("..")
  29.     return number
复制代码

  6.对图片帧进行ASCII码的转换

  1. #将图片进行批量化处理
  2. def star_to_char(number, save_pic_path):
  3.    
  4.     #判断文件夹是否存在,不存在的话则新建文件夹
  5.     if not os.path.exists('cache_char'):
  6.         os.mkdir('cache_char')
  7.     # 生成目标图片文件的路径列表
  8.     img_path_list = [save_pic_path + r'/{}.jpg'.format(i) for i in range(1, number + 1)]
  9.     task = 0
  10.     for image_path in img_path_list:
  11.         
  12.         # 获取图片的分辨率
  13.         img_width, img_height = Image.open(image_path).size
  14.         task += 1
  15.         #处理图片,并显示处理进程
  16.         img_to_char(image_path, img_width, img_height, task)
  17.         
  18.         print('{}/{} is processed.'.format(task, number))
  19.         
  20.     print('=======================')
  21.     print('All pictures were processed!')
  22.     print('=======================')
  23.     return 0
  24. # 将图片转换为灰度图像后进行ascii_char中的ASCII值输出
  25. # 函数输入像素RGBA值,输出对应的字符码。其原理是将字符均匀地分布在整个灰度范围内,像素灰度值落在哪个区间就对应哪个字符码。
  26. def get_char(r, g, b, alpha=256):
  27.    
  28.     #ascii_char就是字符列表,用来将不同灰度的像素进行不同字符体替换的参照。
  29.     ascii_char = list("#RMNHQODBWGPZ*@$C&98?32I1>!:-;. ")
  30.    
  31.     #alpha在为0的时候便是完全透明的图片,所以返回空
  32.     if alpha == 0:
  33.         return ''
  34.    
  35.     length = len(ascii_char)
  36.    
  37.     #转为灰度图
  38.     #RGBA是代表Red(红色)、Green(绿色)、Blue(蓝色)和Alpha的色彩空间,Alpha通道一般用作不透明度参数
  39.     #如果一个像素的alpha通道数值为0%,那它就是完全透明的,而数值为100%则意味着一个完全不透明的像素
  40.    
  41.     gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b)
  42.     # unit = (256.0 + 1) / len(ascii_char)
  43.     unit = 256 / len(ascii_char)
  44.     return ascii_char[int(gray / unit)]
  45. def img_to_char(image_path, raw_width, raw_height, task):
  46.     width = int(raw_width / 6)
  47.     height = int(raw_height / 15)
  48.     # 以RGB模式打开
  49.     im = Image.open(image_path).convert('RGB')
  50.     im = im.resize((width, height), Image.NEAREST)
  51.     txt = ''
  52.     color = []
  53.    
  54.     #遍历图片的每个像素
  55.     for i in range(height):
  56.         for j in range(width):
  57.             pixel = im.getpixel((j, i))
  58.             # 将颜色加入进行索引
  59.             color.append((pixel[0], pixel[1], pixel[2]))
  60.             if len(pixel) == 4:
  61.                 txt += get_char(pixel[0], pixel[1], pixel[2], pixel[3])
  62.             else:
  63.                 txt += get_char(pixel[0], pixel[1], pixel[2])
  64.         txt += '\n'
  65.         color.append((255, 255, 255))
  66.     im_txt = Image.new("RGB", (raw_width, raw_height), (255, 255, 255))
  67.     dr = ImageDraw.Draw(im_txt)
  68.     font = ImageFont.load_default().font
  69.     x, y = 0, 0
  70.     font_w, font_h = font.getsize(txt[1])
  71.     font_h *= 1.37  # 调整字体大小
  72.     for i in range(len(txt)):
  73.         if (txt[i] == '\n'):
  74.             x += font_h
  75.             y = -font_w
  76.         dr.text((y, x), txt[i], fill=color[i])
  77.         y += font_w
  78.         
  79.     #存储处理后的图片至文件夹
  80.     os.chdir('cache_char')
  81.     im_txt.save(str(task) + '.jpg')
  82.     #直接进入新创建的文件夹将生成的图片直接存入文件夹中
  83.     os.chdir("..")
  84.     return 0
复制代码

  7.将转换好的图片帧合成视频

  1. # 进度条显示
  2. def process_bar(percent, start_str='', end_str='', total_length=0):
  3.     bar = ''.join("■ " * int(percent * total_length)) + ''
  4.     bar = '\r' + start_str + bar.ljust(total_length) + ' {:0>4.1f}%|'.format(percent * 100) + end_str
  5.     print(bar, end='', flush=True)
  6. #图片帧合成视频
  7. def jpg_to_video(char_image_path, FPS):
  8.    
  9.     # 设置视频编码器,这里使用MP42编码器
  10.     video_fourcc = VideoWriter_fourcc(*"MP42")
  11.     # 生成目标字符图片文件的路径列表
  12.     char_img_path_list = [char_image_path + r'/{}.jpg'.format(i) for i in range(1, number + 1)]
  13.     # 获取图片的分辨率
  14.     char_img_test = Image.open(char_img_path_list[1]).size
  15.     if not os.path.exists('video'):
  16.         os.mkdir('video')
  17.     video_writter = VideoWriter('video/output.avi', video_fourcc, FPS, char_img_test)
  18.     sum = len(char_img_path_list)
  19.     count = 0
  20.     for image_path in char_img_path_list:
  21.         img = cv2.imread(image_path)
  22.         video_writter.write(img)
  23.         end_str = '100%'
  24.         count = count + 1
  25.         process_bar(count / sum, start_str='', end_str=end_str, total_length=15)
  26.     video_writter.release()
  27.     print('\n')
  28.     print('=======================')
  29.     print('The video is finished!')
  30.     print('=======================')
复制代码

  8.运行主函数

  1. if __name__ == "__main__":
  2.     #初始视频路径
  3.     video_path = 'test_demo0510.mp4'
  4.     #原始视频转为图片的图片保存路径
  5.     save_pic_path = 'cache_pic'
  6.     #图片经处理后的图片保存路径
  7.     save_charpic_path = 'cache_char'
  8.     # 读取视频
  9.     vp = cv2.VideoCapture(video_path)
  10.     # 将视频转换为图片 并进行计数,返回总共生成了多少张图片
  11.     number = video_to_pic(vp)
  12.     # 计算视频帧数
  13.     FPS = vp.get(cv2.CAP_PROP_FPS)
  14.     # 将图像进行字符串处理后
  15.     star_to_char(number, save_pic_path)
  16.     vp.release()
  17.     # 将图片合成为视频
  18.     jpg_to_video(save_charpic_path, FPS)
复制代码

  等待主函数执行完成,后会天生如下三个文件夹:

  9.播放视频

  

  总结

  本文主要先容了本地开发和华为云ModelArts开发两种形式,从开发流程中大家也明确那种形式开发更简朴。
  ModelArts是面向开发者的一站式AI开发平台,为机器学习与深度学习提供海量数据预处理惩罚及半自动化标注、大规模分布式Training、自动化模型天生,及端-边-云模型按需摆设能力,帮助用户快速创建和摆设模型,管理全周期AI工作流。
  华为云ModelArts-Notebook云开发的优势不需要本地进行安装资源包,在ModelArts-Notebook环境就已经集成了这些环境,减少了人为摆设压力,更易于上手、更高性能、一站式服务、支持多种主流框架。
  
  本文整理自华为云社区【内容共创】运动第16期。
  查看运动详情:【奖励公示】【内容共创】第16期 五月絮升华,共创好时光!签约华为云小编,还可赢高达500元礼包!-云社区-华为云
  相关任务详情:任务1.用Python定制我的“本草纲目女孩”

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4