【云駐共創(chuàng)】華為云AI之用Python定制我的《本草綱目女孩》

      網(wǎng)友投稿 603 2025-03-31

      前言

      近日,《本草綱目》毽子操的視頻刷屏網(wǎng)絡(luò)。公司里更是多了很多劉畊宏女孩,在520到來之際特意奉獻(xiàn)這篇文章給大家。如果有心儀的女孩這篇文章可以幫助你哦。

      歌詞:抬腿!拍腿!,側(cè)邊的肥肉咔咔掉,人魚線馬甲線我都要!劉畊宏的男孩女孩看過來。

      讓我們來用Python定制出心儀的“本草綱目女孩”,敲出魔性的代碼舞蹈,520,準(zhǔn)備好心儀女孩的舞蹈視頻,把這份別出心裁的禮物給TA??。

      一、華為云ModelArts-Notebook介紹

      1.華為云ModelArts-Notebook

      ModelArts集成了基于開源的Jupyter Notebook和JupyterLab,可為您提供在線的交互式開發(fā)調(diào)試工具。您無需關(guān)注安裝配置,在ModelArts管理控制臺(tái)直接使用Notebook,編寫和調(diào)測模型訓(xùn)練代碼,然后基于該代碼進(jìn)行模型的訓(xùn)練。

      其中,ModelArts還提供了華為自研的分布式訓(xùn)練加速框架MoXing,您可以在Notebook中使用MoXing編寫訓(xùn)練腳本,讓您代碼編寫更加高效、代碼更加簡潔。

      1.1 Jupyter Notebook是什么

      Jupyter Notebook是一個(gè)可以在瀏覽器中使用的交互式的計(jì)算應(yīng)用程序,該應(yīng)用程序的所有可見的內(nèi)容,以筆記本文檔表示,包括計(jì)算的輸入和輸出、解釋文本、數(shù)學(xué)、圖像和對象的富媒體等表示。因此,Jupyter Notebook可以實(shí)現(xiàn)將代碼、文字完美結(jié)合起來,非常適合從事機(jī)器學(xué)習(xí)、數(shù)據(jù)分析等數(shù)據(jù)科學(xué)工作的人員。

      Jupyter Notebook相關(guān)文檔:https://docs.jupyter.org/en/latest/

      1.2 JupyterLab是什么

      JupyterLab是一個(gè)交互式的開發(fā)環(huán)境,是Jupyter Notebook的下一代產(chǎn)品,可以使用它編寫Notebook、操作終端、編輯MarkDown文本、打開交互模式、查看csv文件及圖片等功能。

      JupyterLab相關(guān)文檔:https://jupyterlab.readthedocs.io/en/stable/

      1.3 什么是Moxing

      MoXing是華為云ModelArts團(tuán)隊(duì)自研的分布式訓(xùn)練加速框架,它構(gòu)建于開源的深度學(xué)習(xí)引擎TensorFlow、MXNet、PyTorch、Keras之上。相對于TensorFlow和MXNet原生API而言,MoXing API讓模型代碼的編寫更加簡單,允許用戶只需要關(guān)心數(shù)據(jù)輸入(input_fn)和模型構(gòu)建(model_fn)的代碼,即可實(shí)現(xiàn)任意模型在多GPU和分布式下的高性能運(yùn)行,降低了TensorFlow和MXNet的使用門檻。另外,MoXing-TensorFlow還將支持自動(dòng)超參選擇和自動(dòng)模型結(jié)構(gòu)搜索,用戶無需關(guān)心超參和模型結(jié)構(gòu),做到模型全自動(dòng)學(xué)習(xí)。

      Moxing相關(guān)文檔:https://github.com/huaweicloud/ModelArts-Lab/tree/master/docs/moxing_api_doc

      2.Python-Opencv

      Python由荷蘭數(shù)學(xué)和計(jì)算機(jī)科學(xué)研究學(xué)會(huì)的吉多·范羅蘇姆于1990年代初設(shè)計(jì),作為一門叫做ABC語言的替代品。Python提供了高效的高級數(shù)據(jù)結(jié)構(gòu),還能簡單有效地面向?qū)ο缶幊?。Python語法和動(dòng)態(tài)類型,以及解釋型語言的本質(zhì),使它成為多數(shù)平臺(tái)上寫腳本和快速開發(fā)應(yīng)用的編程語言,隨著版本的不斷更新和語言新功能的添加,逐漸被用于獨(dú)立的、大型項(xiàng)目的開發(fā)。

      Python解釋器易于擴(kuò)展,可以使用C語言或C++(或者其他可以通過C調(diào)用的語言)擴(kuò)展新的功能和數(shù)據(jù)類型。Python也可用于可定制化軟件中的擴(kuò)展程序語言。Python豐富的標(biāo)準(zhǔn)庫,提供了適用于各個(gè)主要系統(tǒng)平臺(tái)的源碼或機(jī)器碼。

      OpenCV用C++語言編寫,它具有C++,Python,Java和MATLAB接口,并支持Windows,Linux,Android和Mac OS,OpenCV主要傾向于實(shí)時(shí)視覺應(yīng)用,并在可用時(shí)利用MMX和SSE指令,如今也提供對于C#、Ch、Ruby,GO的支持。

      opencv-python的github網(wǎng)址:https://pypi.org/project/opencv-python/

      OpenCV官網(wǎng):https://opencv.org/

      二、本地案例實(shí)現(xiàn)Python定制我的《本草綱目女孩》

      1.案例實(shí)現(xiàn)流程

      眾所周知,視頻是由一幀幀圖像構(gòu)成,Opencv處理視頻圖像信息的原理就是將視頻轉(zhuǎn)為一幀幀圖像,處理完圖像后再轉(zhuǎn)換為視頻。

      用Python實(shí)現(xiàn)案例流程如下:

      2.案例環(huán)境部署

      2.1 本機(jī)環(huán)境

      vs2022

      anaconda(已經(jīng)包括opencv和PIL)

      python

      2.2 安裝對應(yīng)的anaconda包

      anaconda這是一個(gè)非常常用的python包集成管理工具,其中預(yù)安裝了很多python庫,使得我們不需要去手動(dòng)安裝各種的第三方庫,我們知道自己取手動(dòng)安裝的過程中,很容易就會(huì)遇到一些報(bào)錯(cuò),解決起來也非常的麻煩。

      anaconda官網(wǎng):https://www.anaconda.com/products/distribution#Downloads

      下載完軟件包一路點(diǎn)擊安裝就行了,安裝成功后會(huì)出現(xiàn)如下界面。

      【云駐共創(chuàng)】華為云AI之用Python定制我的《本草綱目女孩》

      查看是否安裝成功命令:conda --version

      2.3 安裝opencv-python

      進(jìn)入anaconda控制臺(tái)輸入如下命令:

      pip install opencv-python

      3.案例實(shí)現(xiàn)代碼

      本案例的實(shí)現(xiàn)過程主要分為以下幾步:

      1. 導(dǎo)入數(shù)據(jù) 2. 導(dǎo)入庫函數(shù) 3. 將視頻轉(zhuǎn)化為圖像幀 4. 對圖片幀進(jìn)行ASCII碼的轉(zhuǎn)換 5. 將轉(zhuǎn)換好的圖片幀合成視頻

      3.1 導(dǎo)入數(shù)據(jù)

      視頻-: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 導(dǎo)入庫函數(shù)

      #導(dǎo)入Python庫 import cv2 from PIL import Image,ImageFont,ImageDraw import os from cv2 import VideoWriter, VideoWriter_fourcc, imread, resize

      3.3 將視頻轉(zhuǎn)化為圖像幀

      #將視頻轉(zhuǎn)換為圖片存入目標(biāo)文件夾 def video_to_pic(vp): number = 0 # 判斷載入的視頻是否可以打開 if vp.isOpened(): #r:布爾型 (True 或者False),代表有沒有讀取到圖片,frame:表示截取到的一幀的圖片的數(shù)據(jù),是個(gè)三維數(shù)組 r,frame = vp.read() #判斷文件夾是否存在,不存在的話則新建文件夾 if not os.path.exists('cache_pic'): os.mkdir('cache_pic') os.chdir('cache_pic') else: r = False #遍歷視頻,并將每一幀圖片寫入文件夾 while r: number += 1 cv2.imwrite(str(number)+'.jpg',frame) r,frame = vp.read() print('\n由視頻一共生成了{(lán)}張圖片!'.format(number)) # 修改當(dāng)前工作目錄至主目錄 os.chdir("..") return number

      3.4 對圖片幀進(jìn)行ASCII碼的轉(zhuǎn)換

      #將圖片進(jìn)行批量化處理 def star_to_char(number, save_pic_path): #判斷文件夾是否存在,不存在的話則新建文件夾 if not os.path.exists('cache_char'): os.mkdir('cache_char') # 生成目標(biāo)圖片文件的路徑列表 img_path_list = [save_pic_path + r'/{}.jpg'.format(i) for i in range(1, number + 1)] task = 0 for image_path in img_path_list: # 獲取圖片的分辨率 img_width, img_height = Image.open(image_path).size task += 1 #處理圖片,并顯示處理進(jìn)程 img_to_char(image_path, img_width, img_height, task) print('{}/{} is processed.'.format(task, number)) print('=======================') print('All pictures were processed!') print('=======================') return 0 # 將圖片轉(zhuǎn)換為灰度圖像后進(jìn)行ascii_char中的ASCII值輸出 # 函數(shù)輸入像素RGBA值,輸出對應(yīng)的字符碼。其原理是將字符均勻地分布在整個(gè)灰度范圍內(nèi),像素灰度值落在哪個(gè)區(qū)間就對應(yīng)哪個(gè)字符碼。 def get_char(r, g, b, alpha=256): #ascii_char就是字符列表,用來將不同灰度的像素進(jìn)行不同字符體替換的參照。 ascii_char = list("#RMNHQODBWGPZ*@$C&98?32I1>!:-;. ") #alpha在為0的時(shí)候便是完全透明的圖片,所以返回空 if alpha == 0: return '' length = len(ascii_char) #轉(zhuǎn)為灰度圖 #RGBA是代表Red(紅色)、Green(綠色)、Blue(藍(lán)色)和Alpha的色彩空間,Alpha通道一般用作不透明度參數(shù) #如果一個(gè)像素的alpha通道數(shù)值為0%,那它就是完全透明的,而數(shù)值為100%則意味著一個(gè)完全不透明的像素 gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b) # unit = (256.0 + 1) / len(ascii_char) unit = 256 / len(ascii_char) return ascii_char[int(gray / unit)] def img_to_char(image_path, raw_width, raw_height, task): width = int(raw_width / 6) height = int(raw_height / 15) # 以RGB模式打開 im = Image.open(image_path).convert('RGB') im = im.resize((width, height), Image.NEAREST) txt = '' color = [] #遍歷圖片的每個(gè)像素 for i in range(height): for j in range(width): pixel = im.getpixel((j, i)) # 將顏色加入進(jìn)行索引 color.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 += '\n' color.append((255, 255, 255)) im_txt = Image.new("RGB", (raw_width, raw_height), (255, 255, 255)) dr = ImageDraw.Draw(im_txt) font = ImageFont.load_default().font x, y = 0, 0 font_w, font_h = font.getsize(txt[1]) font_h *= 1.37 # 調(diào)整字體大小 for i in range(len(txt)): if (txt[i] == '\n'): x += font_h y = -font_w dr.text((y, x), txt[i], fill=color[i]) y += font_w #存儲(chǔ)處理后的圖片至文件夾 os.chdir('cache_char') im_txt.save(str(task) + '.jpg') #直接進(jìn)入新創(chuàng)建的文件夾將生成的圖片直接存入文件夾中 os.chdir("..") return 0

      3.5 將轉(zhuǎn)換好的圖片幀合成視頻

      # 進(jìn)度條顯示 def process_bar(percent, start_str='', end_str='', total_length=0): bar = ''.join("■ " * int(percent * total_length)) + '' bar = '\r' + start_str + bar.ljust(total_length) + ' {:0>4.1f}%|'.format(percent * 100) + end_str print(bar, end='', flush=True) #圖片幀合成視頻 def jpg_to_video(char_image_path, FPS): # 設(shè)置視頻編碼器,這里使用MP42編碼器 video_fourcc = VideoWriter_fourcc(*"MP42") # 生成目標(biāo)字符圖片文件的路徑列表 char_img_path_list = [char_image_path + r'/{}.jpg'.format(i) for i in range(1, number + 1)] # 獲取圖片的分辨率 char_img_test = Image.open(char_img_path_list[1]).size if not os.path.exists('video'): os.mkdir('video') video_writter = VideoWriter('video/output.avi', video_fourcc, FPS, char_img_test) sum = len(char_img_path_list) count = 0 for image_path in char_img_path_list: img = cv2.imread(image_path) video_writter.write(img) end_str = '100%' count = count + 1 process_bar(count / sum, start_str='', end_str=end_str, total_length=15) video_writter.release() print('\n') print('=======================') print('The video is finished!') print('=======================')

      3.6 主函數(shù)

      if __name__ == "__main__": #初始視頻路徑 video_path = 'test_demo0510.mp4' #原始視頻轉(zhuǎn)為圖片的圖片保存路徑 save_pic_path = 'cache_pic' #圖片經(jīng)處理后的圖片保存路徑 save_charpic_path = 'cache_char' # 讀取視頻 vp = cv2.VideoCapture(video_path) # 將視頻轉(zhuǎn)換為圖片 并進(jìn)行計(jì)數(shù),返回總共生成了多少張圖片 number = video_to_pic(vp) # 計(jì)算視頻幀數(shù) FPS = vp.get(cv2.CAP_PROP_FPS) # 將圖像進(jìn)行字符串處理后 star_to_char(number, save_pic_path) vp.release() # 將圖片合成為視頻 jpg_to_video(save_charpic_path, FPS)

      3.7 運(yùn)行結(jié)果

      運(yùn)行后一共生成了382張圖片,和視頻文件,保存在如下文件夾下。

      4.案例播放代碼

      import cv2 from IPython.display import clear_output, Image, display def show_video(video_path, show_text): video = cv2.VideoCapture(video_path) while True: try: clear_output(wait=True) # 讀取視頻 ret, frame = video.read() if not ret: break height, width, _ = frame.shape cv2.putText(frame, show_text, (0, 100), cv2.FONT_HERSHEY_TRIPLEX, 3.65, (255, 0, 0), 2) frame = cv2.resize(frame, (int(width / 2), int(height / 2))) _, ret = cv2.imencode('.jpg', frame) display(Image(data=ret)) except KeyboardInterrupt: video.release() #視頻循環(huán)播放 i=1 while i>0: show_video('video/output.avi',str(i)) i=i+1

      三、華為云AI實(shí)現(xiàn)Python定制我的《本草綱目女孩》

      1.基礎(chǔ)配置

      "本草綱目"健身操字符串視頻操作實(shí)例的案例頁面如下:https://developer.huaweicloud.com/develop/aigallery/Notebook/detail?id=c81526e5-cc88-497f-8a21-41a5632e014e

      點(diǎn)擊Run in ModelArts,進(jìn)入JupyterLab頁面。

      配置當(dāng)前運(yùn)行環(huán)境,切換規(guī)格,并選擇免費(fèi)的就好了。

      2.導(dǎo)入數(shù)據(jù)

      選擇下方代碼,點(diǎn)擊運(yùn)行。

      運(yùn)行完成后如下:

      3.安裝相關(guān)依賴

      選擇下方代碼,點(diǎn)擊運(yùn)行安裝opencv包

      pip install opencv_python

      4.導(dǎo)入庫函數(shù)

      #導(dǎo)入Python庫 import cv2 from PIL import Image,ImageFont,ImageDraw import os from cv2 import VideoWriter, VideoWriter_fourcc, imread, resize

      5.將視頻轉(zhuǎn)化為圖像幀

      #將視頻轉(zhuǎn)換為圖片存入目標(biāo)文件夾 def video_to_pic(vp): number = 0 # 判斷載入的視頻是否可以打開 if vp.isOpened(): #r:布爾型 (True 或者False),代表有沒有讀取到圖片,frame:表示截取到的一幀的圖片的數(shù)據(jù),是個(gè)三維數(shù)組 r,frame = vp.read() #判斷文件夾是否存在,不存在的話則新建文件夾 if not os.path.exists('cache_pic'): os.mkdir('cache_pic') os.chdir('cache_pic') else: r = False #遍歷視頻,并將每一幀圖片寫入文件夾 while r: number += 1 cv2.imwrite(str(number)+'.jpg',frame) r,frame = vp.read() print('\n由視頻一共生成了{(lán)}張圖片!'.format(number)) # 修改當(dāng)前工作目錄至主目錄 os.chdir("..") return number

      6.對圖片幀進(jìn)行ASCII碼的轉(zhuǎn)換

      #將圖片進(jìn)行批量化處理 def star_to_char(number, save_pic_path): #判斷文件夾是否存在,不存在的話則新建文件夾 if not os.path.exists('cache_char'): os.mkdir('cache_char') # 生成目標(biāo)圖片文件的路徑列表 img_path_list = [save_pic_path + r'/{}.jpg'.format(i) for i in range(1, number + 1)] task = 0 for image_path in img_path_list: # 獲取圖片的分辨率 img_width, img_height = Image.open(image_path).size task += 1 #處理圖片,并顯示處理進(jìn)程 img_to_char(image_path, img_width, img_height, task) print('{}/{} is processed.'.format(task, number)) print('=======================') print('All pictures were processed!') print('=======================') return 0 # 將圖片轉(zhuǎn)換為灰度圖像后進(jìn)行ascii_char中的ASCII值輸出 # 函數(shù)輸入像素RGBA值,輸出對應(yīng)的字符碼。其原理是將字符均勻地分布在整個(gè)灰度范圍內(nèi),像素灰度值落在哪個(gè)區(qū)間就對應(yīng)哪個(gè)字符碼。 def get_char(r, g, b, alpha=256): #ascii_char就是字符列表,用來將不同灰度的像素進(jìn)行不同字符體替換的參照。 ascii_char = list("#RMNHQODBWGPZ*@$C&98?32I1>!:-;. ") #alpha在為0的時(shí)候便是完全透明的圖片,所以返回空 if alpha == 0: return '' length = len(ascii_char) #轉(zhuǎn)為灰度圖 #RGBA是代表Red(紅色)、Green(綠色)、Blue(藍(lán)色)和Alpha的色彩空間,Alpha通道一般用作不透明度參數(shù) #如果一個(gè)像素的alpha通道數(shù)值為0%,那它就是完全透明的,而數(shù)值為100%則意味著一個(gè)完全不透明的像素 gray = int(0.2126 * r + 0.7152 * g + 0.0722 * b) # unit = (256.0 + 1) / len(ascii_char) unit = 256 / len(ascii_char) return ascii_char[int(gray / unit)] def img_to_char(image_path, raw_width, raw_height, task): width = int(raw_width / 6) height = int(raw_height / 15) # 以RGB模式打開 im = Image.open(image_path).convert('RGB') im = im.resize((width, height), Image.NEAREST) txt = '' color = [] #遍歷圖片的每個(gè)像素 for i in range(height): for j in range(width): pixel = im.getpixel((j, i)) # 將顏色加入進(jìn)行索引 color.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 += '\n' color.append((255, 255, 255)) im_txt = Image.new("RGB", (raw_width, raw_height), (255, 255, 255)) dr = ImageDraw.Draw(im_txt) font = ImageFont.load_default().font x, y = 0, 0 font_w, font_h = font.getsize(txt[1]) font_h *= 1.37 # 調(diào)整字體大小 for i in range(len(txt)): if (txt[i] == '\n'): x += font_h y = -font_w dr.text((y, x), txt[i], fill=color[i]) y += font_w #存儲(chǔ)處理后的圖片至文件夾 os.chdir('cache_char') im_txt.save(str(task) + '.jpg') #直接進(jìn)入新創(chuàng)建的文件夾將生成的圖片直接存入文件夾中 os.chdir("..") return 0

      7.將轉(zhuǎn)換好的圖片幀合成視頻

      # 進(jìn)度條顯示 def process_bar(percent, start_str='', end_str='', total_length=0): bar = ''.join("■ " * int(percent * total_length)) + '' bar = '\r' + start_str + bar.ljust(total_length) + ' {:0>4.1f}%|'.format(percent * 100) + end_str print(bar, end='', flush=True) #圖片幀合成視頻 def jpg_to_video(char_image_path, FPS): # 設(shè)置視頻編碼器,這里使用MP42編碼器 video_fourcc = VideoWriter_fourcc(*"MP42") # 生成目標(biāo)字符圖片文件的路徑列表 char_img_path_list = [char_image_path + r'/{}.jpg'.format(i) for i in range(1, number + 1)] # 獲取圖片的分辨率 char_img_test = Image.open(char_img_path_list[1]).size if not os.path.exists('video'): os.mkdir('video') video_writter = VideoWriter('video/output.avi', video_fourcc, FPS, char_img_test) sum = len(char_img_path_list) count = 0 for image_path in char_img_path_list: img = cv2.imread(image_path) video_writter.write(img) end_str = '100%' count = count + 1 process_bar(count / sum, start_str='', end_str=end_str, total_length=15) video_writter.release() print('\n') print('=======================') print('The video is finished!') print('=======================')

      8.運(yùn)行主函數(shù)

      if __name__ == "__main__": #初始視頻路徑 video_path = 'test_demo0510.mp4' #原始視頻轉(zhuǎn)為圖片的圖片保存路徑 save_pic_path = 'cache_pic' #圖片經(jīng)處理后的圖片保存路徑 save_charpic_path = 'cache_char' # 讀取視頻 vp = cv2.VideoCapture(video_path) # 將視頻轉(zhuǎn)換為圖片 并進(jìn)行計(jì)數(shù),返回總共生成了多少張圖片 number = video_to_pic(vp) # 計(jì)算視頻幀數(shù) FPS = vp.get(cv2.CAP_PROP_FPS) # 將圖像進(jìn)行字符串處理后 star_to_char(number, save_pic_path) vp.release() # 將圖片合成為視頻 jpg_to_video(save_charpic_path, FPS)

      等待主函數(shù)執(zhí)行完成,后會(huì)生成如下三個(gè)文件夾:

      9.播放視頻

      總結(jié)

      本文主要介紹了本地開發(fā)和華為云ModelArts開發(fā)兩種形式,從開發(fā)流程中大家也明白那種形式開發(fā)更簡單。

      ModelArts是面向開發(fā)者的一站式AI開發(fā)平臺(tái),為機(jī)器學(xué)習(xí)與深度學(xué)習(xí)提供海量數(shù)據(jù)預(yù)處理及半自動(dòng)化標(biāo)注、大規(guī)模分布式Training、自動(dòng)化模型生成,及端-邊-云模型按需部署能力,幫助用戶快速創(chuàng)建和部署模型,管理全周期AI工作流。

      華為云ModelArts-Notebook云開發(fā)的優(yōu)勢不需要本地進(jìn)行安裝資源包,在ModelArts-Notebook環(huán)境就已經(jīng)集成了這些環(huán)境,減少了人為部署壓力,更易于上手、更高性能、一站式服務(wù)、支持多種主流框架。

      本文整理自華為云社區(qū)【內(nèi)容共創(chuàng)】活動(dòng)第16期。

      查看活動(dòng)詳情:https://bbs.huaweicloud.com/blogs/352652

      相關(guān)任務(wù)詳情:任務(wù)1.用Python定制我的“本草綱目女孩”

      AI Python 上云必讀 云端實(shí)踐 視頻

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      版權(quán)聲明:本文內(nèi)容由網(wǎng)絡(luò)用戶投稿,版權(quán)歸原作者所有,本站不擁有其著作權(quán),亦不承擔(dān)相應(yīng)法律責(zé)任。如果您發(fā)現(xiàn)本站中有涉嫌抄襲或描述失實(shí)的內(nèi)容,請聯(lián)系我們jiasou666@gmail.com 處理,核實(shí)后本網(wǎng)站將在24小時(shí)內(nèi)刪除侵權(quán)內(nèi)容。

      上一篇:Excel表格進(jìn)行凍結(jié)窗口的功能操作
      下一篇:保護(hù)生命!打造安全無憂的生產(chǎn)車間安全規(guī)章制度
      相關(guān)文章
      激情小说亚洲色图| 中文字幕亚洲综合小综合在线| 久久狠狠爱亚洲综合影院| 亚洲一卡2卡三卡4卡有限公司| 亚洲色欲色欲www在线丝| 区三区激情福利综合中文字幕在线一区亚洲视频1 | 67194在线午夜亚洲| 亚洲成人动漫在线观看| 亚洲综合激情六月婷婷在线观看| 亚洲综合成人网在线观看| 亚洲高清在线播放| 内射少妇36P亚洲区| 亚洲天堂一区二区| 亚洲一区综合在线播放| 久久精品国产亚洲av麻豆色欲 | 亚洲av成人一区二区三区在线播放| 亚洲成年网站在线观看| 亚洲人成网站在线在线观看| 亚洲精品中文字幕无码A片老| 亚洲人成网站免费播放| 亚洲精品国产suv一区88| 亚洲.国产.欧美一区二区三区| 亚洲a无码综合a国产av中文| 国产亚洲男人的天堂在线观看| 亚洲国产av无码精品| 久久99亚洲综合精品首页| 亚洲综合熟女久久久30p| 亚洲AV综合色区无码一区| 亚洲无删减国产精品一区| 亚洲精品91在线| 亚洲五月综合缴情婷婷| 亚洲人成人伊人成综合网无码| 国内成人精品亚洲日本语音| 亚洲人成无码网站久久99热国产| 日韩一卡2卡3卡4卡新区亚洲| 亚洲国产精品一区第二页| 亚洲天堂中文资源| 亚洲成_人网站图片| 日韩亚洲翔田千里在线| 自拍偷自拍亚洲精品被多人伦好爽| 亚洲精品高清无码视频|