本周作業(yè):(小組完成)
1-圖像處理與人臉識(shí)別的結(jié)合應(yīng)用砾跃。群里貼圖
2-每組學(xué)會(huì)一個(gè)新的ffmpeg的命令冒滩,用于視音頻處理(自學(xué):看文檔,搜索等)
3-每組學(xué)會(huì)2個(gè)圖像處理的函數(shù)腮鞍,貼圖
4-以上內(nèi)容寫(xiě)到帖子里(博文)(每人一份)
基礎(chǔ)操作
os
import os
dir(os)
os.getcwd() #查看當(dāng)前文件夾
os.chdir() #更換目錄
os.getcwd()
os.makedir("./")#在當(dāng)前目錄下創(chuàng)建文件夾注釋多行
ctrl+“?/”
配置環(huán)境
文件夾此電腦 右鍵屬性 高級(jí)系統(tǒng)設(shè)置 高級(jí)-環(huán)境變量 path 編輯
ffmpeg命令
中文文檔??:
http://www.jishuchi.com/read/ffmpeg/12416
https://blog.csdn.net/Lyman_Ye/article/details/80415627
1.添加水印
添加圖片水印命令
ffmpeg -i input.mp4 -vf "movie=logo.png[wm]; [in][wm]overlay=30:10[out]" output.mp4
input.mp4 輸入視頻 ; logo.png 水印圖片; overlay 水印添加的位置 ; output.mp4 輸出視頻
視頻處寫(xiě)明絕對(duì)路徑后莹菱,添加的水印圖片不可以再寫(xiě)移国,兩者要放到一塊
在python中實(shí)現(xiàn):
import moviepy.editor as mp
#本地視頻位置
video = mp.VideoFileClip("test.mp4")
#準(zhǔn)備水印圖片
logo = (mp.ImageClip("shuiyin.png")
.set_duration(video.duration) # 水印持續(xù)時(shí)間
.resize(height=100) # 水印的高度,會(huì)等比縮放
.margin(right=8, top=8, opacity=1) # 水印邊距和透明度
.set_pos(("left","center"))) # 水印的位置
final = mp.CompositeVideoClip([video, logo])
# mp4文件默認(rèn)用libx264編碼道伟, 比特率單位bps
final.write_videofile("test_shuiyin.mp4", codec="libx264", bitrate="10000000")
2. 視頻分割
# 視頻分割 clip.mp4
import ffmpy
ff = ffmpy.FFmpeg(
inputs={'test.mp4': None},
outputs={'test_clip.mp4': [
'-ss', '00:00:09',
'-t', '00:00:11',
'-vcodec', 'copy',
'-acodec', 'copy'
]}
)
ff.run()
3.從視頻中提取音頻
安裝庫(kù)(pip install 即可)
Ffmpeg:多媒體框架中的扛把子
可以完成視頻迹缀、音頻格式處理轉(zhuǎn)換(解碼、編碼蜜徽、轉(zhuǎn)碼祝懂、復(fù)用、解復(fù)用拘鞋、流砚蓬、過(guò)濾和播放)
MoviePy:能讀取寫(xiě)入所有音視頻格式的庫(kù)
(安裝前需要正確安裝ffmpeg庫(kù))代碼操作 [1]
import moviepy.editor as mp
my_clip = mp.VideoFileClip(r"test.mp4") # 導(dǎo)入視頻
my_clip.audio.write_audiofile(r"my_result.mp3") # 輸出
- 常見(jiàn)音視頻格式
視頻:
WMV(WMV,WMA盆色,ASF *)
OGG(ogg灰蛙,oga,ogv隔躲,ogx)
3GP(3gp缕允,3gp2、3g2蹭越、3gpp障本,3gpp2)
MP4(mp4,m4a响鹃,m4v驾霜,f4v,f4a买置,m4b粪糙,m4r,f4b忿项,mov)
音頻:
MP3蓉冈;AAC城舞;WMA;AC3(杜比數(shù)字)
PIL圖片處理
??PIL中文文檔:
https://pillow-cn.readthedocs.io/zh_CN/latest/index.html
https://www.iteye.com/blog/hereson-2224334
1.圖片的復(fù)制粘貼
- 裁切圖片
Image.open()打開(kāi)文件
crop((x0,y0,x1,y1)) 截取圖片 (left, upper, right, lower) - 粘貼圖片
paste(i2,where,mask=None)
where參數(shù)可以是- (x,y)坐標(biāo)對(duì):i2的像素點(diǎn)(0,0)對(duì)齊原圖中的(x,y)粘貼寞酿,i2超過(guò)原圖邊界的部分被拋棄
- bbox:i2必須和該bounding box大小一致
- None:i2必須和原圖大小一致
如果i2的mode和原圖不一致家夺,粘貼前會(huì)被轉(zhuǎn)換。
mask參數(shù):a same-sized mask image of mode "1","L" or “RGBA ”(control which pixels get replaced)
from PIL import Image
# 兩張圖片的拼貼
def specificLocationReplace(img1,img2,save_path):
im1=Image.open(img1)
im2=Image.open(img2)
tmp=im1.crop((50,125,400,475)) # img1截圖提供貼圖資源
im2.paste(tmp,(0,0,350,350)) # 貼到img2上面
im2.save(save_path)
img1 = r'image\dog2.jpg'
img2 = r'image\2.jpg'
save_path ='replace.jpg'
specificLocationReplace(img1,img2,save_path)
2.從動(dòng)圖中提取圖片
from PIL import Image
im = Image.open(r'image\gif.gif') # 讀入一個(gè)GIF文件
try:
im.save('pic{:02d}.png'.format(im.tell()))
while True:
im.seek(im.tell()+1)
im.save(r'image\gif\pic{:02d}.png'.format(im.tell()))
except:
print("處理結(jié)束")
會(huì)有部分gif圖片壓縮問(wèn)題伐弹,出現(xiàn)噪點(diǎn)拉馋。