1. 程式人生 > >給圖片加濾鏡效果

給圖片加濾鏡效果

轉自https://mp.weixin.qq.com/s?__biz=MzUyMTUxMDQzMw==&mid=2247483847&idx=1&sn=75336bd2bc826d3d8d995b972b8353c5&chksm=f9db4a89ceacc39f4bd21a1e84e5fe75f3b11fe7a2c9699a1aa1ea2fd5d77b00a6ac1198d16d&mpshare=1&scene=23&srcid=05107lQ0YZ3KSTTO9HPG0WaU#rd

小程之前介紹“把文字或影象繪製到視訊上”時,講解了FFmpeg的drawtext濾鏡,而實際上,FFmpeg的濾鏡很強大,遠不止加字幕或加圖片的功能。

濾鏡是很有趣的,比如可以把圖片變模糊、變色、縮放旋轉,等等。

本文介紹FFmpeg濾鏡的使用。

主要目的是讓讀者感受一下FFmepg的濾鏡效果,這樣在實際需要某種效果時,可以考慮使用FFmpeg。

小程這裡直接使用FFmpeg的命令列來使用濾鏡,不涉及寫程式碼呼叫FFmpeg的內容,並且這裡都是對圖片進行濾鏡處理,讀者會看到很多有趣的處理效果。

但是,由於FFmpeg濾鏡的內容很多,小程這裡沒有一一介紹,讀者如果想詳細瞭解這部分內容的話,可以查閱官方文件: 
http://www.ffmpeg.org/ffmpeg-filters.html#Video-Filters

本文有較多圖片。

(0)前提

先要讓ffmpeg程式支援濾鏡,對於FFmpeg的安裝或編譯,讀者可以關注“廣州小程”微信公眾號,並查閱“音視訊”方面的文章,裡面有詳細的介紹。

小程之前介紹過,讓FFmpeg支援濾鏡的話,需要在配置FFmpeg時指定使用avfilter:

./configure –enable-avfilter

最終編譯出來的FFmepg是支援濾鏡的,比如,小程的ffmpeg程式的濾鏡資訊是這樣的: 

小程的ffmpeg程式已經可以用於濾鏡處理了,比如之前加字幕、加圖片的操作,用的就是這個ffmepg程式。

在進行濾鏡處理之前,小程先給出幾張漂亮的原圖: 
 
 

(1)模糊

引數boxblur。

./ffmpeg -i 1.jpg -vf boxblur=2 blur1.jpg

值越大越模糊,以下是值分別為2、4、8的效果: 
 
 

(2)變色

有幾個辦法。

(a)colorbalance

調整rgb某個維度的權重實現變色。

選項有三組,分別為rs/gs/bs、rm/gm/bm、rh/gh/bh。每一個選項都指定了目標顏色(rgb中的一個),s表現偏暗,m表現偏中間,h表現偏亮(且平滑)。

選項的值範圍為[-1, 1],正數表示偏向目標顏色,負數表示遠離目標顏色。

比如這三個命令:

./ffmpeg -i 1.jpg -vf colorbalance=rs=1 colorbalance1-1.jpg 
./ffmpeg -i 1.jpg -vf colorbalance=rm=1 colorbalance1-2.jpg 
./ffmpeg -i 1.jpg -vf colorbalance=rh=1 colorbalance1-3.jpg

得到的圖片是這樣的: 
 
 

再比如把圖片變得冷色一點:

./ffmpeg -i 2.jpg -vf colorbalance=rh=-0.6 colorbalance2.jpg

效果是這樣的: 

(b)colorchannelmixer

對rgba四個通道進行重新計算,並分別給定權重比例。

先看命令:

./ffmpeg -i 3.jpg -vf colorchannelmixer=.3:.4:.3:0:.3:.4:.3:0:.3:.4:.3 colorchannelmixer3.jpg 
./ffmpeg -i 2.jpg -vf colorchannelmixer=.393:.769:.189:0:.349:.686:.168:0:.272:.534:.131 colorchannelmixer2.jpg

每個通道的權重從0到1,先給red的計算權重,即red=red*rr + blue*rb + green*rg + 
alpha*ra,然後分別是green跟blue的計算權重。

上面兩個命令對應的效果是這樣的: 
 

(c)hue

改變色調,相當在調色盤上調色。

./ffmpeg -i 2.jpg -vf hue=h=30:s=1 hue_30.jpg

s為飽和度,範圍為[-10,10],預設為1。h為角度,不同角度有不同的顏色佈局(類比調色盤),範圍為[0,360],超過360則相當於從0開始,預設為0。

以下效果為s=1(預設),h分別為30、60、90、120、160、180、210、250、280、320、360時的效果(在360時,就是原圖): 
 
 
 
 
 
 
 
 
 
 

再比如,只調飽和度s:

./ffmpeg -i 2.jpg -vf hue=h=0:s=-5 hue_s-5.jpg

以下效果為h=0(預設),s分別為-10、-5、0、1、5、10時的效果(在1時,就是原圖): 
 
 
 
 
 

(d)lut/lutyuv/lutrgb

./ffmpeg -i 2.jpg -vf lutyuv="y=maxval+minval-val:u=maxval+minval-val:v=maxval+minval-val" lutyuv1.jpg 
./ffmpeg -i 2.jpg -vf lutyuv="y=negval:u=negval:v=negval" lutyuv2.jpg 
lutyuv用於yuv顏色空間。這兩個命令的效果是一樣的,都是反轉,得到底片的效果: 

./ffmpeg -i 2.jpg -vf lutyuv=y=negval lutyuv2.jpg 
把亮度(y)反轉,效果如下: 

./ffmpeg -i 2.jpg -vf lutyuv="u=128:v=128" lutyuv3.jpg 
把色度移除(uv),得到黑白圖: 

./ffmpeg -i 2.jpg -vf lutyuv="y=2*val" lutyuv4.jpg 
提升亮度,效果如下: 

./ffmpeg -i 2.jpg -vf lutyuv='u=1.2*val:v=1.1*val' lutyuv5.jpg 
調整uv的值,效果如下: 

(e)negate

反轉,得到底片的效果,引數值為0或1,為1時表示把alpha通道也反轉,預設為0。

./ffmpeg -i 3.jpg -vf negate=0 negate1.jpg

效果如下: 

(f)swapuv

uv互換。

./ffmpeg -i 2.jpg -vf swapuv swapuv1.jpg

效果如下: 

(3)裁剪

引數crop,支援裁剪多大、在哪個位置開始,也支援帶變數的更復雜的裁剪。

./ffmpeg -i 1.jpg -vf crop=200:300:100:100 crop1.jpg 
./ffmpeg -i 1.jpg -vf crop=w=200:h=300:x=100:y=100 crop2.jpg 
這兩個命令是一樣的,都是在(100,100)的位置,裁剪200*300的大小,效果如下: 

./ffmpeg -i 1.jpg -vf crop=400:500 crop2.jpg 
這個命令是從中間開始,裁剪400*500的尺寸。

(4)去logo

引數delogo,在指定的區域作模糊處理,達到消除logo的效果。

./ffmpeg -i 2.jpg -vf delogo=x=0:y=0:w=50:h=50:band=5:show=1 delogo2.jpg 
band為模糊的強度,show為1時顯示模糊的區域框,省略show或值為0時不顯示區域框。

效果如下: 

(5)加邊框

引數drawbox。

./ffmpeg -i 2.jpg -vf drawbox drawbox1.jpg 
在邊界畫一個實心的黑框,效果如下: 

./ffmpeg -i 2.jpg -vf drawbox=10:10:200:100:[email protected] drawbox2.jpg 
./ffmpeg -i 2.jpg -vf drawbox=x=10:y=10:w=200:h=100:[email protected] drawbox2.jpg 
這兩個命令是一樣的,0.5為邊框的透明度(0到1),效果如下: 

./ffmpeg -i 2.jpg -vf drawbox=x=10:y=10:w=300:h=230:[email protected]:t=10 drawbox3.jpg 
t為邊框厚度,效果如下: 

(6)畫網格

引數drawgrid。

./ffmpeg -i 2.jpg -vf drawgrid=w=iw/3:h=ih/3:t=2:[email protected] drawgrid1.jpg 
畫一個3*3的白色的厚度為2,透明度為0.5的網路,效果如下: 

./ffmpeg -i 2.jpg -vf drawgrid=w=400:h=100:t=2:[email protected] drawgrid2.jpg 
畫每個單元為400*100的網格,效果如下: 

(7)新增字幕

引數為drawtext,這個小程之前已經詳細介紹過了,請關注“廣州小程”微信公眾號查閱相應文章。

(8)畫邊緣

引數edgedetect。

./ffmpeg -i 2.jpg -vf edgedetect=low=0.1:high=0.4 edge2-1.jpg 
./ffmpeg -i 2.jpg -vf edgedetect=low=0.5:high=0.8 edge2-2.jpg 
low小於等於high,且值的範圍為[0,1],是檢測演算法使用的閾值。

以上兩個命令的效果是這樣的: 
 

再比如:

./ffmpeg -i 1.jpg -vf edgedetect=low=0.1:high=0.2 edge1-1.jpg 
效果是這樣的: 

(9)eq效果

引數為eq,可以調整亮度、飽和度、對比度等。

./ffmpeg -i 2.jpg -vf eq=brightness=0.2 eq1.jpg 
brightness為亮度,值範圍為[-1,1],效果是這樣的: 

./ffmpeg -i 2.jpg -vf eq=contrast=1.5 eq2.jpg 
contrast是對比度,值範圍為[-2, 2],效果如下: 

./ffmpeg -i 2.jpg -vf eq=saturation=0.1 eq3.jpg 
saturation是飽和度,值範圍為[0,3],預設是1,效果如下: 

./ffmpeg -i 2.jpg -vf eq=gamma_r=0.2 eq4.jpg 
調整gamma係數,範圍為[0.1,10],預設是1,效果如下: 

(10)縮放

引數scale。

./ffmpeg -i 3.jpg -vf scale=200:200 scale1.jpg 
縮放為200*200,效果如下: 

(11)等比放大

引數hqx。

./ffmpeg -i 2.jpg -vf hqx=4 hqx1.jpg 
效果是尺寸等比放大4倍。

(12)橫向倒置

引數hflip。

./ffmpeg -i 2.jpg -vf "hflip" hflip1.jpg 
水平方向作映象,效果是這樣的: 

(13)縱向倒置

引數vflip。

./ffmpeg -i 2.jpg -vf "vflip" vflip2.jpg 
縱向作映象,效果是這樣的: 

(14)加噪音

引數noise。

./ffmpeg -i 3.jpg -vf noise=alls=100:allf=t+u noise1.jpg 
alls表示所有畫素成分的強度,範圍為[0,100],預設為0;allf表示所有畫素成分的噪音型別,t為臨時噪音,u為統一噪音。效果如下: 

./ffmpeg -i 3.jpg -vf noise=alls=100:allf=a noise2.jpg 
a表示平滑的平均噪音,效果如下: 

./ffmpeg -i 3.jpg -vf noise=alls=100:allf=p noise3.jpg 
p表示隨機噪音,效果如下: 

(15)加水印

引數overlay。

相關推薦

圖片效果

轉自https://mp.weixin.qq.com/s?__biz=MzUyMTUxMDQzMw==&mid=2247483847&idx=1&sn=75336bd2bc826d3d8d995b972b8353c5&chksm=f9db4a8

HTML5canvas圖片

function $$(id) { return document.getElementById(id); } window.onload = function () { var cnv = $$("canvas

[Swift通天遁地]八、媒體與動畫-(4)相機添CoreImage效果

puts 結束 展示 plist 視圖 類庫 access 捕捉 att 本文將演示如何給相機添加實時的濾鏡效果。 首先打開項目的配置文件【Info.plist】,在空白區域點擊鼠標右鍵,彈出右鍵菜單。 選擇【Add Row】添加行命令,添加一行配置選項。 在【K

【181102】VC++ 圖片水印效果示例原始碼

VC++ 給圖片加水印效果示例,匯入原圖片、匯入水印圖片,可以將兩張圖疊加到一張圖上,相當於加水印效果,不過實現起來裡面有很多細節的,具體請看程式碼。源程式編譯正常,不過加水印功能有些錯誤,對水印圖片要

乾貨:圖片水印效果的自定義控制元件LabelImageView

這兩天不知道給Soyi加些什麼東西,那就慢慢的往CodeActivity里加東西吧,所以就寫了這麼個簡單的自定義控制元件LabelImageView。 HOW to do? 0,獲取一大堆引數,沒有傳就用預設的。 1,設定傳來的image_src作

Android視訊編輯器(四)通過OpenGL視訊增加不同效果

private GPUImageFilter curFilter; private GPUImageFilter leftFilter; private GPUImageFilter rightFilter; public void init() { curF

ps技術--批量圖片水印

photos strong http jpg 記錄 介紹 可見 出現 同一文件   在日常的辦公過程中,對於一些比較重要的文件的掃描件需要特殊處理,這時我們就需要給它們加上水印,保證它們的用途唯一,而這些掃描件很多,不可能一一給他們加水印,所以為提高工作效率,我們就可以使用

php圖片文字水印

img black rom filename 這不 data- 等等 con rac <?php /*給圖片加文字水印的方法*/ $dst_path = ‘http://f4.topitme.com/4/15/11/1166351597fe111154l.jpg‘

GLSL/C++ 實現效果

概念 第一個 美麗 函數 form 一個 傳遞 eve 針對 入門效果之浮雕 "浮雕"圖象效果是指圖像的前景前向凸出背景。常見於一些紀念碑的雕刻上。要實現浮雕事實上很easy。我們把圖象的一個象素和左上方的象素進行求差運算。並加上一個灰度。這個

css3效果

gid tran microsoft for 效果 image pix lte css filter:blur(3px); -webkit-filter:blur(3px); -moz-filter:blur(3px); -o-filter:blur(3px); filte

Bootstrap3基礎 img-thumbnail 圖片一個圓角的邊框

dev scala boot 一個 studio styles 比例 rip ast 禮悟:   公恒學思合行悟,尊師重道存感恩。葉見尋根三返一,江河湖海同一體。 虛懷若谷良心主,願行無悔給最苦。讀書鍛煉養身心,誠勸且行且珍惜。   

Filter:revealtrans 效果

 任意位置插入圖片  <img src="images/ban1.jpg" width="660" height="309" style="FILTER: revealTrans(Duration=2, Transition=23)" name=slide />  

Android 圖片邊框

分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!        

Java-縮放圖片圖片水印

先匯入jar包thumbnailator-0.4.8.jar jar包下載連結:https://pan.baidu.com/s/1kDeyJjleCz1tikOZXxHpQg 密碼:qq5p public class Test1 { public static void mai

android憤怒小鳥遊戲、自定義View、掌上餐廳App、OpenGL自定義氣泡、抖音電影效果等原始碼

Android精選原始碼 精練的範圍選擇器,範圍和單位可以自定義 自定義View做的小鳥遊戲 android popwindow選擇商品規格顏色尺寸效果原始碼 實現Android帶有鋸齒背景的優惠樣式原始碼 android充值頁面效果原始碼 使用

Android GPUImage效果

先附上一張效果圖:   第一步:新增依賴 compile 'jp.co.cyberagent.android.gpuimage:gpuimage-library:1.4.1' 第二步:程式碼 public class MainActivity extends Ap

圖片圖片邊框 圖片邊框要求為PNG格式

package com.product.utils; import javax.imageio.ImageIO; import java.awt.*; import java.awt.image.BufferedImage; import java.io.*; import jav

萬彩影像大師教程 | 圖片特效

萬彩影像大師提供豐富的圖片濾鏡,輕鬆實現圖片效果的再編輯。裁剪、翻轉、色溫調整、飽和、閾值、動態模糊,多種濾鏡特效增強圖片的表達效果。具體操作步驟如下: 1.滑鼠選中並雙擊需要進行特效處理的圖片; 2.在圖片編輯器介面,選擇是否對圖片進行裁剪、修改尺寸和翻轉效果的設定,設定後記

Java圖片水印

我們利用的還是谷歌提供的這個非常強大的工具類Thumbnailator github上面的地址是:https://github.com/coobird/thumbnailator maven的地址 <dependency>    <groupId&g

C#: 圖片文字內容

String bitmapFile = String.Empty; String newBitmapFile = String.Empty; var openf = new OpenFileDialog(); openf.Fi