图片
現在的智慧型手機 內建都有許多濾鏡或是扭曲的功能 基本上這些功能都是對每個畫素作運算之後得到的 不過在OpenCV上面可以透過一些簡單的方法就可以快速達成類似的效果喲
在OpenCV中我們可以利用不同的color map 做成不同的風格效果 並且搭配上內建的applyColorMap這個函數 就可以快速地作出濾鏡的效果囉 之後我們會在其他篇文章介紹如何利用對畫素的值作運算 來得到更多不同種濾鏡的效果
图片
图片
图片

再來介紹一下 如何製造凸透鏡效果在這邊我們順便介紹一下怎樣利用滑鼠還選擇 凸透鏡效果的中心點 以及利用sliding bar 來控制凸透鏡的效果我們可以定義一個callback function來update凸透鏡的效果 setMouseCallback("SrcImage", CallBackFunc, NULL); 利用呼叫這個function的時候我們必須指定要在哪一個window下偵測滑鼠控制的點 以及要被執行的函數 void FunctionName(int event, int x, int y, int flags, void* userdata) x, y即為滑鼠的位置 滑鼠偵測的事件包括 EVENT_MOUSEMOVE EVENT_LBUTTONDOWN EVENT_RBUTTONDOWN EVENT_MBUTTONDOWN EVENT_LBUTTONUP EVENT_RBUTTONUP EVENT_MBUTTONUP EVENT_LBUTTONDBLCLK EVENT_RBUTTONDBLCLK EVENT_MBUTTONDBLCLK Flag EVENT_FLAG_LBUTTON EVENT_FLAG_RBUTTON EVENT_FLAG_MBUTTON EVENT_FLAG_CTRLKEY EVENT_FLAG_SHIFTKEY EVENT_FLAG_ALTKEY 這邊提供一個簡單的例子 如何使用mouse event
接著 如何加上slider 來做凸透鏡效果的控制 在OpenCV我們利用 createTrackbar( TrackbarName, "Linear Blend", &alpha_slider, alpha_slider_max, on_trackbar ); 來產生一個slider bar "Linear Blend" 就是要把Bar放在哪個window上面 alpha_slider 是slider回傳的直 alpha_slider_max 就是slider的最大值 on_trackbar 是slider改變值的時候會呼叫的函數這邊附上OpenCV官方網站給的例子 (把兩張圖疊在一起 然後做透明化)
接著我們把凸透鏡效果結合mouse的callback function加上slider bar做個整合
图片
图片
喜歡這則消息嗎? 趕快加入Takobear粉絲團吧!